一部のクエリにFetchManyを使用していますが、NHibernateプロファイラーで次のエラーが発生します。
警告:
コレクションフェッチで指定されたfirstResult/maxResults。メモリに適用!
これは、フェッチがバインドされていないためだと思います。これに対する解決策はありますか?
一部のクエリにFetchManyを使用していますが、NHibernateプロファイラーで次のエラーが発生します。
警告:
コレクションフェッチで指定されたfirstResult/maxResults。メモリに適用!
これは、フェッチがバインドされていないためだと思います。これに対する解決策はありますか?
この問題が発生するのは、を使用FetchMany
すると結果セット全体がメモリに保存され、指定されたサブセットが取得されるためです(非効率的で潜在的に危険なもの)。
どうやら、を使用するときにフェッチする前にサブセットを制限する方法はありませんFetchMany
。
JoinQueryOver
解決策は、aまたはaのいずれかを使用することですJoinAlias
(2つの違いは他のSOの質問で説明されています)
やることに夢中
Session.QueryOver<Product>().FetchMany(p=>p.Images).Take(5)
質問の警告を生成します、私たちはします
Image image = null;
Session.QueryOver<Product>().Left.JoinQueryOver(x => x.Images, () => image).Take(5)
SELECT TOP (5)
クエリを生成します