4
我有一個EF5代碼優先項目,從一個大多數只讀數據庫拉,所以我使用.AsNoTracking()
與絕大多數我的查詢來提高性能。EF5代碼優先:IsLoaded和.AsNoTracking()
我很好奇,雖然我有很多的導航性能的,有時它會是有用的知道,如果他們已經被加載,無論是繼源查詢的.Include()
,或由於物業被訪問(如果配置爲延遲加載)。
通常,我可以這樣做:
context.Entry(myEntity).Reference(e => e.MyNavigationProperty).IsLoaded;
但自然不會有未經跟蹤實體工作,因爲,唉,真是未經跟蹤。我有一種感覺,答案是「不」,但是有沒有一種方法可以確定導航屬性是否已加載到未跟蹤的實體上(而不會訴諸於動態代理上的反射等任何混亂)?
謝謝!
沒有骰子 - 因爲實體未被跟蹤,它(及其相關實體)不會被緩存在上下文中。 'Local.Count'始終爲0. – 2013-04-24 15:50:57
如果NMP被加載爲已跟蹤,那麼您應該能夠在本地找到它。如果你的所有實體都被加載爲未跟蹤的,那麼我認爲你不能從dbcontext獲取這些信息......因爲它們沒有被跟蹤。讓我們等待Slauma。 – 2013-04-24 16:16:06
是的,從上下文獲取信息看起來不太可能,但信息必須包含在實體本身中(因爲它需要跟蹤該值是否已經被延遲加載等)。我希望在某個地方有一些可能提供這些信息的模糊方法。 :) – 2013-04-24 16:22:42