1

私は次のオブジェクトを持っています: A -> B -> IList -> D -> IList など..

A のリストをフェッチすると、NHibernate は B で内部結合を行います。それで問題ありません。しかし、C は N+1 問題でフェッチされます。

私はこれを試しました:

var query = session.Query<A>()
    .Fetch(x => x.B)
    .ThenFetchMany(x => x.C)
    .Distinct();

しかしその後、彼は以前の 5 回ではなく 117 回のフェッチを行いました。たとえば、E は熱心にロードされなくなりました。または、C は B で 1 回ではなく 10 回です。

このような状況に最適なアプローチは何ですか?

前もって感謝します

4

1 に答える 1

0

Ayende の記事Solving the Select N+1 Problemを見て、NHibernate Profiler の使用を開始すると、N+1 の問題を検出できますAlert: Select N+1

于 2012-07-25T22:35:21.453 に答える