繁体   English   中英

实体框架4:为什么即使没有Include语句也要加载相关实体?

[英]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.

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