【发布时间】:2016-07-27 22:40:43
【问题描述】:
在我们的网络应用程序中,我们使用外观模式。这导致我们使用 Automapper 在对象层 DAL DTO ViewModels 之间进行转换。
我禁用了 LazyLoading,它已经大部分生效。 然而,一些嵌套对象被包含在内,而没有在“.include”语句中显式添加它们。
示例:
public class Parent {
public Guid? Child1Id{ get; set; }
[ForeignKey("Child1Id")]
public Child1 Child1 { get; set; }
}
public class Child1 {
public Guid? Child2Id{ get; set; }
[ForeignKey("Child2Id")]
public Child2 Child2 { get; set; }
}
public class Child2 {
public string Name { get; set; }
}
现在尝试检索 Parent 和 Child1;也将返回 Child2 如图:
var Parent = RepositoryReference.DbContext
.Parents
.Include(p => p.Child1);
当钻入父对象时,如图所示检索到 Child2
Parent.Child1.Child2 != null
请注意 Child2 不是虚拟的。
我可以采取哪些进一步的措施来忽略我明确包含的对象的嵌套子级?
谢谢
【问题讨论】:
-
我认为您在其他地方调用了 child2,请使用 SQL 分析器查看 child2 何时调用。
标签: c# entity-framework lazy-loading