导航 属性 未在 Linq 查询语法中实现,延迟加载也不起作用

Navigational Property not materialized in Linq Query Syntax also Lazy Loading didnt work

下面是使用 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 循环中访问它时,它不会向数据库发送请求以加载这些实体(延迟加载)。

我是不是遗漏了什么,或者这是 entity framework 应该工作的方式。

因为在这种情况下,我希望延迟加载能够工作并在访问时加载相关实体。

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

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

var query = from a in TableA.Include(a => a.B)
            select a;