Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
代码优先方法错误:LINQ to实体中不支持指定的类型成员“xxxxx”_Linq_Entity Framework_Linq To Entities_Code First - Fatal编程技术网

代码优先方法错误:LINQ to实体中不支持指定的类型成员“xxxxx”

代码优先方法错误:LINQ to实体中不支持指定的类型成员“xxxxx”,linq,entity-framework,linq-to-entities,code-first,Linq,Entity Framework,Linq To Entities,Code First,为了进一步抽象我的存储库层,我尝试采用代码优先的方法,如下所述: 我在帐户和订阅实体之间存在多对多关系。每个实体上都存在指向其他实体的导航属性,例如Account.Subscriptions 在创建自己的模型之前,我使用的是实体生成的模型,以下是实体上下文: public IQueryable<Account> GetBySubscriptionId(int subId) { return from a in db.Accounts where a.Su

为了进一步抽象我的存储库层,我尝试采用代码优先的方法,如下所述:

我在帐户和订阅实体之间存在多对多关系。每个实体上都存在指向其他实体的导航属性,例如Account.Subscriptions

在创建自己的模型之前,我使用的是实体生成的模型,以下是实体上下文:

public IQueryable<Account> GetBySubscriptionId(int subId)
{
    return from a in db.Accounts
           where a.Subscriptions.Any(s => s.SubscriptionId == subId)
           select a;
}
现在Account的模型如下所示:

public class Account
    {
        public int AccountId { get; set; }
        public string Name { get; set; }

        // nav properties
        public virtual List<Subscription> Subscriptions { get; set; }
}
现在,当我尝试运行相同的LINQ查询时,会出现以下错误:

指定的类型成员 中不支持“订阅” LINQ对实体的访问。只有初始化者, 实体成员和实体导航 支持属性


非常感谢您的建议。

尝试将签名从

        // nav properties 
        public virtual List<Subscription> Subscriptions { get; set; }

无耻地从Scott Hanselmann的演示中盗取-使用这种模式,这里还有一个Scott Guthrie的演示,使用相同的想法


列表是各种接口ICollection、IQueryable、IEnumerable等的具体实现,实体框架在从数据库检索内容时使用代理对象,因此使用虚拟声明,虚拟声明使用这些接口的不同实现,这就是错误的来源

您使用的是什么版本的代码优先?您有这两个实体的代码优先映射或配置设置吗?不使用代码优先模板,只使用代码中声明的模型样式。非常感谢。很棒的教程。
        // nav properties 
        public virtual ICollection<Subscription> Subscriptions { get; set; }