使用.Include从由Navigation属性替换的关联表中进行选择

时间:2011-07-14 21:46:11

标签: vb.net linq linq-to-entities

在我的数据库中,我有3个表Act,ActVisi和Visi。表ActVisi是Act和Visi表之间的关联表。在我的EF4数据模型中,关联表ActVisi被Acts和Visis实体中的多对多导航属性所取代。

我想选择Visicode = 1的条目(在ActVisi关联表中)。我已经尝试了下面的查询,当我删除.Include("Visis").Where(Function e.Code = 1)但我得到了所有结果时,它可以正常工作。如何使以下查询工作。我怀疑我在vb中的lambda语法是不正确的。感谢您的帮助。

Dim query2 = From li In Objctx.Acts.Include("Visis").Where(Function e.Code = 1)
                    Join fc In Objctx.Cals On li.DATE1 Equals fc.DD
                    Join bl In Objctx.Cals On li.Date2 Equals bl.DD
                    Order By li.Child_ID, bl.Sort_ID, fc.Sort_ID
                    Select Project = li.Child_ID, bl_sort = bl.Sort_Wk, fc_sort = fc.Sort_Wk

1 个答案:

答案 0 :(得分:1)

你的where子句是对“Acts”而不是“ActVisis”的代码施加条件。 有一种方法可以将条件放在包含的实体上。有关详细信息,请参阅此帖:

Join and Include in Entity Framework