下面是使用 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 查询的能力。