繁体   English   中英

实体框架-包含多个级别

[英]Entity Framework - Include with multiple levels

如果我有3个班级A,B和C:

class A {
    public B b { get; set; }
    public C c { get; set; }
}

class B {
    public C c { get; set; }
}

class C {
    ...
}

当我进行如下查询时:

Context.A.Where(...).Include(x => x.b).Include(x => x.c);

实体同时在A和B中加载C对象,从而复制数据。 有办法预防吗? 我不使用延迟加载。

您指示实体框架使用A集加载bc实体。 由于b项包含对C类型项的引用,这些引用实际上可能是与a对象加载的项相同,因此Entity Framework将使用它们来构造对象图。 这并不意味着Entity Framework会生成额外的SQL连接来为B类型加载c项目。 为此,您将编写

Context.A.Where(...).Include(x=>x.b).Include(x=>x.c).Include(x=>x.b.c)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM