在 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;
对象层次结构为
- entity1(多个)-(一个)childentity1
- childentity1(多个)-(一个)childentity2
- childentity1(多个)-(一个)childentity3
我不确定是否应该以这种方式链接 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
个对象已加载到上下文中。
以下是从相关表中预加载 Entity Framework
实体的正确方法吗:
from item in _context.entity1
.Include("childentity1.childentity2")
.Include("childentity1.childentity3")
where item.id == 1;
对象层次结构为
- entity1(多个)-(一个)childentity1
- childentity1(多个)-(一个)childentity2
- childentity1(多个)-(一个)childentity3
我不确定是否应该以这种方式链接 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
个对象已加载到上下文中。