2011-08-22 109 views
3

我們已經通過使用匿名類型投影來加載相關對象,並且大多數情況下它的工作原理沒有問題(不是很好,只是沒問題;使用all columns並不理想,但你能做什麼呢)。實體框架:AsNoTracking殺死相關對象的急切加載

現在我們已經運行到需要AsNoTracking()的情況但這似乎禁用急切裝載行爲,我們有瓦特/匿名類型 - 對結果的任何屬性訪問現在將觸發新的查詢。

這兩個概念是相互排斥的嗎?

回答

2

懶惰加載和急切加載完全是兩碼事。

這就是說,這聽起來像你正在討論fixup,這兩者都不是。很難說,因爲你沒有顯示任何代碼。不,沒有要求選擇所有列,但是,又一次,你不顯示你的代碼,所以我不能幫你修復它。

無論如何,是的,這是正常的。 .AsNoTracking表示加載的實體及其引用的任何內容都不會與內存中的其他對象一起修復。這是一場表現勝利,但這意味着你可能會不止一次地在內存中「相同」的實體。所以它通常只用於只讀工作。

+0

通過投影到一個匿名類型的急切加載是沒有什麼不同這個這個問題:http://stackoverflow.com/questions/996438/how-to-sort-related-entities-with-eager-loading-in-ado -net實體框架。有沒有辦法在啓用了AsNoTracking的單個查詢中加載相關對象? – Nariman

+1

投影到匿名類型是投影,而不是急切的加載。只要您瞭解其中的差異,投影就可以使用'AsNoTracking()'正常工作。 –

相關問題