2012-05-02 47 views
3

我有兩個對象具有彼此之間的多對多關係。實體框架中的延遲加載項目

我在數據庫優先方法中使用實體框架。

我的數據庫分析器顯示每次我獲取一組對象A時,它會爲A中的每個元素加載另一組對象B.我假設在延遲加載時,這不會發生,或者B會在通過導航屬性訪問時被抓取。

訪問對象的代碼使用一個通用的方法,其中的實體是我的DbContext

public virtual IQueryable<T> GetAll() 
{ 
    IQueryable<T> query = entities.Set<T>(); 
    return query; 
} 

兩個導航屬性被實現爲virtual ICollection<T>和我有Configuration.LazyLoadingEnabled = true在我DbContext構造明確設置。

我錯過了什麼,或接近這個錯誤的方式嗎?我應該刪除導航屬性並通過其他查詢明確加載我需要的內容嗎?

+0

你在看調試器中加載的'A'元素?請記住,當您用'B'集合觀看'A'元素時,您會用調試器觸發延遲加載。 – Slauma

+0

我將'LazyLoadingEnabled'設置爲false,然後'B'集合沒有加載,所以我不知道爲什麼這是 –

+0

它只是意味着代碼中的某些內容觸及這些導航屬性並執行延遲加載 - 就像@Slauma上面提到的甚至是調試工具都這樣做 –

回答

0

在專家在場的情況下,我不願意問這個:)但是會在DbContext上設置ProxyCreationEnabled = false而不是在這種情況下幫助?對不起,如果這太「新手」的一個點