0

下面是使用 linq 的连接:

var query = from a in TableA
            join b in TableB
            on new { a.Id1, a.Id2 } equals new { b.Id1, b.Id2 }
            select a;
var entities = query.ToList();
foreach(var item in entities)
{
    foreach(var b in item.B)
    {
        var propValue = b.SomeProperty;
    }
}

假设 TableB 具有 TableA 中项目的匹配记录。但是在执行查询之后,每个 A 的导航属性 B 中都没有值。

此外,当我尝试在内部 foreach 循环中访问它时,它不会向 DB 发送请求以加载这些实体(延迟加载)。

我是否遗漏了什么或者实体框架应该工作的方式。

因为在这种情况下,我预计延迟加载将起作用并在访问时加载相关实体。

有没有办法在使用 LINQ 查询语法的同时实现这些导航属性,而不会失去编写没有子查询的干净 sql 查询的能力。

4

1 回答 1

0

您不应该加入 LINQ to Entities。而是使用您的导航属性。

var query = from a in TableA.Include(a => a.B)
            select a;
于 2018-07-23T14:32:41.103 回答