在 Entity Framework 查询中链接包含语句

Chaining Include statements in Entity Framework query

以下是从相关表中预加载 Entity Framework 实体的正确方法吗:

from item in _context.entity1
    .Include("childentity1.childentity2")
    .Include("childentity1.childentity3")
where item.id == 1;

对象层次结构为

我不确定是否应该以这种方式链接 Include 语句。

不完全是。应该是:

from item in _context.entity1
    .Include("childentity1.childentity2")
    .Include("childentity1.childentity3")
where item.id == 1
select item;

注意最后的 select 子句。没有它,程序将无法编译。除此之外,您的声明将按预期工作。

您可能还想使用另一种语法,它允许强类型化,这样您就可以避免 运行-time 错误,以防您拼错某些内容:

from item in _context.entity1
    .Include(x => x.childentity1.childentity2)
    .Include(x => x.childentity1.childentity3)
where item.id == 1
select item;

为此你需要 using System.Data.Entity;。此外,如果您怀疑您的实体是否真的被热切加载,您可以尝试如下操作:

_context.childentity1.Local.Count()

这将告诉您有多少 childentity1 个对象已加载到上下文中。