我正在使用POCO對象實體框架,並且已啓用LazyLoading。實體框架4延遲加載實體集
如果我正在處理與對象關聯的集合,集合何時完全加載以及在什麼情況下?
如果我把每一種
Order.OrderItems.Count()
Order.OrderItems.Any(x => x.StatusId = aValue)
Order.OrderItems.All(x => x.StatusId = aValue)
做這些保證的OrderItems收集的完整加載? 在代碼中的點查詢
後查詢或
context.LoadProperty(order, 「OrderItems」)
,當我們呼籲
Order.Include(「OrderItems」)
但我已經意識到有時這並不總是發生 - 我想知道這不會發生的後果。我覺得我有一點與它
謝謝@Merlyn Morgan-Graham。 你能澄清'如果Linq必須返回一個布爾值或整數,那麼它很可能立即運行你的查詢'。我查看了http://msmvps.com/blogs/jon_skeet/archive/2010/12/28/reimplementing-linq-to-objects-part-10-any-and-all.aspx,看起來Any和所有實際上遍歷覆蓋下的結果,所以會自動實現收集。因此,看起來好像任何/全部都會在外部查詢中加載集合 –
@TimBrown:「看起來Any和All實際上遍歷了封面下的結果,因此會自動實現集合」。我想這正是我所說的,只是在鼬鼠說話(「可能」= **總是**,哈哈)。我剛剛做了一個編輯,希望能夠澄清這句話。 –
另外,通過嵌套查詢,我的意思是:'Order.OrderItems.Where(i => i.Rebates.Any())'''Rebates.Any()'不會被評估,除非外部查詢是評估。 –