使用LINQ和Entity如何返回多对多关系的值

时间:2010-11-21 01:36:53

标签: linq-to-sql entity-framework linq-to-entities entity-framework-4

我有两个实体,即帐户和订阅,它们之间有多对多的关联。我似乎无法在教程中找到如何执行以下操作:

我想找到所有类型为x的订阅的帐户。如果我没有使用Entity框架,我可以加入AccountSubscription表,但是无法通过Entity访问。如果我需要查询多对多关系,是否必须创建一个特殊实体?

2 个答案:

答案 0 :(得分:3)

EF应为多对多关系创建导航属性。然后你应该可以做这样的事情:

var accounts = from a in Accounts
               where a.Subscriptions.Any(s => s.SubscriptionType == "something")
               select a;

例如,我有一个简单的数据库,产品和组之间有很多关系: alt text

EF在模型中创建关联: alt text

所以我可以创建一个这样的查询(这里包括组,所以我可以看到类别):

alt text

答案 1 :(得分:0)

这样的事情:

List<Accounts> myAccounts = //get accounts;

foreach(Accounts a in myAccounts)
{
  foreach(Subscriptions s in a)
  {
     //add it to a global list?
  } 
}