2016-04-05 43 views
0

我不知道這是EF懶惰問題還是真正的EF錯誤,因爲這種不規則性有時會發生(在相同的代碼中,約有10次出現) 問題有時候,出於某種原因,某些隨機導航屬性(並非總是相同)不會加載惰性加載活動和代理創建活動。LazyLoading懶得加載一些導航屬性

該示例是一個帶有+ - 40個字段的表單,表示Person,與許多其他表具有關係連接,其他表與其他表具有關係連接。 我使用延遲加載,因爲在我看來,最好的方法是因爲表單中涉及的表的數量。問題是有些字段顯示空白,因爲一些導航。屬性不加載。

真正的問題是,有沒有,或者任何人知道EF停止延遲加載導航屬性或只加載「一半」的原因

示例代碼太複雜且私密(企業)在這裏分享。

+1

通常當用於加載實體的'DbContext'超出了作用域,已處理和/或GC'd時,我發現這發生了。如果你知道字段需要填寫表單,爲什麼不''.include()'它們? – CodingGorilla

+0

感謝CodingGorilla,這確實是平常的,我已經看到由dispose/Gc引起的很多帖子,事實並非如此,我已經在我的dbcontext中評論了Dispose()。我不想.include()的原因是因爲應用程序相當廣泛,並且建立在延遲加載假設上。包括()都需要相當可疑。除此之外,還有什麼想法? –

回答

0

上面解決了很長一段時間被重新加載整個的DbContext,經過前所述的問題當時我發現問題很多,如果你有另一個dbcontext的對象,從那一刻開始,lazzyloading停止工作(現在有意義....:P)

0

前段時間我有類似的問題。 在查詢結束使用.ToList()解決了這一問題對我來說:

試試這個:

using(EntityContext db = new EntityContext()) 
{ 
    db.LazyLoadingEnabled = true; 
    List<Persons> persons = db.Persons.ToList(); 
} 
+0

你好,在我的情況下,只有一個「人」誰沒有加載所有的屬性不是人的名單,除了我tryed.ToList()。FirstOrDefault()獲取一個人,一些屬性仍然不加載。這對我來說不是一個解決方案。 –