我有以下示例:
using (MyContext context = new MyContext())
{
var query = from entityA in context.EntityA.Include("TestProperty")
join entityB in context.EntityB on entityA.Id equals entityB.EntityAId
join entityC in context.EntityC on entityB.Id equals entityC.EntityBId
where entityC.Id == id
select entityA;
List<EntityA> toReturn = query.ToList();
return toReturn;
}
我的联接都按预期工作,但是,我的'TestProperty'导航属性未正确加载。我看,在运行时,它是null。
当我执行以下操作时:
context.LoadProperty(toReturn, "TestProperty");
正确加载'TestProperty'属性。我的LINQ-to-SQL语句中是否存在错误的内容?
更新: 我将第一行更改为:
from entityA in context.EntityA.Include("TestProperty").ToList()
并将其余的线条保持在相同的位置,并且正确加载了我的属性。这是解决问题的正确方法吗?
答案 0 :(得分:1)
“这是问题的正确解决方案吗?”这是最糟糕的解决方案,因为您现在正在进行客户端的整个查询。
答案 1 :(得分:-1)
必须在加入&amp; where子句
检查一下:
var query = ((from entityA in context.EntityA
join entityB in context.EntityB on entityA.Id equals entityB.EntityAId
join entityC in context.EntityC on entityB.Id equals entityC.EntityBId
where entityC.Id == id
select entityA) as objectQuery<EntityA>).Include("TestProperty")