2016-04-06 65 views
1

我有一些Linq NHibernate查詢的麻煩。NHibernate集合急切加載需要計數

我需要獲得一批憑證及其詳細信息。由於我需要迭代它們,我想在一次執行中獲取所有信息。

我的查詢是以下之一:

   return this.Session.Query<VouchersToIntegrate>() 
       .Take(query.BatchSize) 
       .Fetch(x => x.VoucherLines)      
       .ToList(); 

哪裏VouchersToIntegrate是憑證和VoucherLines傳票的線。

現在batchSize被設置爲50.000,但是當我返回所有的對象時,我只得到23XXX。這是因爲我猜框架在從數據庫(客戶端)獲取所有對象後在內部執行一個獨特的操作。有沒有其他的方法來獲得50.000對象與SQL服務器端獨特的過濾器?

謝謝

+0

使用NHibernate迭代惰性加載的屬性不會導致n + 1加載問題,如果你已經正確地映射了你的實體。參見[更深入的解釋](/ a/36070727/1178314)。所以如果你想急於加載,因爲你有n + 1加載問題,你應該閱讀它。 –

回答