[英]Entity framework 4 : Why are related entites loaded even though there is no Include statement?
我正在使用实体框架4。我有2个对象:一个Process对象和一个ProcessDescription对象。 流程和ProcessDescription之间存在一对一关联(一个流程始终具有一个ProcessDescription)
我正在执行以下操作:
using (EFEntities ef = new EFEntities(ConnectionString.EFConnString))
{
var source = ef.Process;
List<BusinessLayer.Process> processList = source.ToList();
}
在ToList语句之后,如果我在调试器中检查processList,则可以看到ProcessDescription对象可用于每个Process,并且我想知道为什么。 我以为我必须编写.include(“ ProcessDescription”)才能包含它们。 它是一对一的关联,会自动加载吗?
更新:EnableLazyLoading确实设置为true。 我的问题是:如果将该属性设置为true,我认为将加载相关实体,但仅在需要时才加载。 要检查它是否已加载,我们可以在相关实体上使用IsLoaded标志。 但是,就我而言,ProcessDescription对象上没有IsLoaded属性。 这是否意味着当我执行“ ToList()”时,会再次自动执行内部联接,因为这是一对一关系?
关闭延迟加载,您将在调试器中看到空值。
context.ContextOptions.LazyLoadingEnabled = false;
http://msdn.microsoft.com/zh-CN/library/system.data.objects.objectcontext.contextoptions.aspx
(假设数据库首先使用ObjectContext)
在实体之间的关系中,实体框架自动加载所有关联的实体。 您可以通过在using语句中设置ef.ContextOptions.LazyLoading = false
来禁用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.