私は非常に深いオブジェクトグラフ(5-6ノード)を持っており、NHProfの部分をトラバースすると "Select N + 1"という問題が発生しています行う)。流暢NHibernate選択n + 1
私の知る2つのソリューションです
- イーガーロード子ども
- ブレーク離れて私のオブジェクトグラフ(と熱心負荷)私は本当にいずれかを実行したくない
これらのうち(私はそれが成長を見ているように後でグラフを分割することがありますが)
今のところ....
NHibernate(FluentNHibernateを持つ)は、子供にアクセスしようとするたびにselect-n + 1-ingの代わりにそれらを一度にロードするように指示することはできますか?
私も、おそらく同じ問題(というか、可能な場合は、上記の溶液によって解決される)であるのが、「無限の結果が設定され、」取得しています。
各子コレクション(グラフ全体で)は約20人しかいませんが、20^5はたくさんあるので、ルートを取得するときにすべてを読み込もうとは思っていませんが、私が近くに行くたびに子供のコレクション。
編集:あとで考える...私は子供をレンダリングするときにページングを導入したいのですが?ここで私のオブジェクトグラフを壊さなければならないのですか、それともこれらの問題を解決するために使用できるいくつかの卑劣さがありますか?
"このシナリオを処理するために特定のnhibernateクエリを作成するのではなく、ドメインモデルを使用するアプローチを追求したいと思うことは間違いありません。確かに。私が望む最後のものは特定のクエリです。そのことをチェックしてください。 –
note - > fluent-nhインターフェイスは、BatchSize()属性をサポートするようになりました。 – KevinT