为了进一步抽象我的存储库层,我尝试遵循此处描述的代码优先方法:http: //msdn.microsoft.com/en-us/magazine/ee236639.aspx。
我在 Account 和 Subscription 实体之间存在多对多关系。Navigation 属性存在于指向另一个实体的每个实体上(例如 Account.Subscriptions)。
在我创建自己的模型之前,我使用的是实体生成的模型,下面的工作正常(“db”是实体上下文):
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 to Entities 不支持指定的类型成员‘订阅’。仅支持初始化程序、实体成员和实体导航属性。”
任何建议都非常感谢。