Join and Include in Entity Framework
基本上,下面的查询返回当前用户有权查看的“Property”对象列表。
IQueryable<Property> currPropList
= from p in ve.Property
.Include("phyAddress")
.Include("Contact")
from a in ve.ACLs
from u in ve.Account
from gj in ve.ObjectGroupJoin
where u.username == currUsername // The username
&& (a.Account.id == u.id // The ACLs
&& a.objType == (int)ObjectType.Group)
&& (gj.ObjectGroup.id == a.objId // The groups
&& gj.objId == p.id) // The properties
select p;
查询返回正确的属性列表,在很大程度上可以。
这个
related SO question
建议“Include”调用和where子句之间可能存在冲突。怎么会这样?
但无论如何,我如何重新构造此查询以加载“phyAddress”和“Contract”成员?具体来说,我只想把成员
返回
谢谢。
编辑
从
条款
IQueryable<Property> currPropList
= from p in ve.Property
.Include("phyAddress")
select p;
并加载“phyAddress”成员。
但这不管用。。。
IQueryable<Property> currPropList
= from p in ve.Property
.Include("phyAddress")
from a in ve.ACLs
select p;
基本上
包括
从
编辑2
一个解决办法是
作为
对象查询
这行得通。。。。
IQueryable<Property> currPropList
= ((from p in ve.Property
from a in ve.ACLs
select p) as ObjectQuery<Property>).Include("phyAddress");
只有一个查询就可以做到这一点吗?
编辑3
延迟执行
[
http://blogs.msdn.com/charlie/archive/2007/12/09/deferred-execution.aspx