簡體   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