如何包含财产

时间:2010-08-19 18:53:35

标签: c# .net linq entity-framework linq-to-entities

我有以下示例:

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()

并将其余的线条保持在相同的位置,并且正确加载了我的属性。这是解决问题的正确方法吗?

2 个答案:

答案 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")