使用Entity Framework查询M:M关系

时间:2011-10-05 15:02:55

标签: linq entity-framework .net-4.0

我如何修改以下代码:

    var result = from p in Cache.Model.Products
                 from f in p.Flavours
                 where f.FlavourID == "012541-5-5-5-651"
                 select p;

f.FlavourID提供一系列ID,假设只有一个值,如上例所示?

鉴于以下ERD模型:

产品* => ProdCombinations < = * Flavors

ProdCombinations是一个交汇点/链接表,只有一个复合键。

1 个答案:

答案 0 :(得分:2)

我的头脑中

string [] ids = new[]{"012541-5-5-5-651", "012541-5-5-5-652", "012541-5-5-5-653"};

var result = from p in Cache.Model.Products
                 from f in p.Flavours
                 where ids.Contains(f.FlavourID)
                 select p;

有一些限制,但是之前的一系列ID对我有用。我实际上只尝试过SQL Server后端,我的ID是整数。

据我了解,Linq需要将您的查询转换为SQL,有时只能这样做。例如,IEnumerable<SomeClass>不可能产生运行时错误,但可以使用简单类型的集合。