私はかなり深いオブジェクトグラフ(5〜6ノード)を持っており、その一部をトラバースすると、NHProfは「SelectN + 1」の問題があると言っています(私はそうしています)。
私が知っている2つの解決策は
- 熱心な負荷の子供
- オブジェクトグラフを分解します(そして熱心な負荷)
私はこれらのどちらも本当にやりたくありません(ただし、グラフが成長することを予測しているので、後でグラフを分解する可能性があります)
今のところ....
NHibernate(FluentNHibernateを使用)に、子にアクセスしようとするたびに、子を反復処理するときにselect-n + 1-ingを実行するのではなく、すべてを一度にロードするように指示することはできますか?
また、「無制限の結果セット」を取得しています。これはおそらく同じ問題です(または、可能であれば上記の解決策で解決されます)。
各子コレクション(グラフ全体)には約20のメンバーしかありませんが、20 ^ 5は多いので、ルートを取得するときにすべてを熱心にロードしたくはありません。その近くに行きます。
編集:後付け....子をレンダリングしたいときにページングを導入したい場合はどうなりますか?ここでオブジェクトグラフを壊す必要がありますか、それともこれらすべての問題を解決するために使用できるいくつかのこっそりがありますか?