0

NHibernate を使用するために .NET エンティティの大きなグラフを移植しようとしていますが、ほとんどの関係が一方向にしか定義されていないという問題が発生しています。ほとんどの場合、子クラスには親への参照が含まれていますが、親には、その子への参照のコレクションが含まれていません。すべてのコレクションを追加して関係を双方向のものに変えるのはかなりの作業になるので、そうしないと NHibernate にどのような結果が生じるのだろうか?

私が気づいた 1 つの結果は、カスケード削除が失敗したように見えることです (子は DB で削除されず、参照整合性違反が発生します)。それが唯一の結果ですか、それとも他に注意する必要がある問題はありますか?

リレーションシップを単方向または双方向にする場合のガイドラインはありますか?

ありがとう

4

1 に答える 1

1

削除をカスケードできないことが、NHibernate 自体の唯一の問題になると思います。

しかし、グラフを簡単にたどることはできません。子から親へはできますが、明らかに親から子へはできません。したがって、親からすべての子が必要になるたびに、クエリを発行する必要があります。

したがって、特定の操作のために子オブジェクトを使用する必要があるルート オブジェクトがある永続化ドメイン モデルに NH を使用している場合は、子を取得するためにモデル内からクエリを発行する必要があります。したがって、モデルはデータ アクセスに結合されます。

または、子をコレクションとして親オブジェクトに渡す必要がありますが、NH がそれらを埋めることができるように、モデルにコレクションの幅を開始するのは簡単かもしれません。

于 2010-09-16T16:50:43.993 に答える