これは私のエンティティ関係モデルの一部です:
「It」関係をマッピングする方法はいくつか見つかりました:
1 : 新しいクラスを追加し、多対多の関係を使用して参照します。
class It{
A a;
B b;
C c;
}
class A{
public virtual ISet<It> Relationship{set;get;}
}
ただし、NHibernate が独自に「It」に ID を追加するか、複合キーを使用する必要があるのではないかと心配しています (これは良い方法ではありません)。
2 :これを見つけました。各クラスで 2 つの個別のコレクションを使用して、3 方向の関係をモデル化します。しかし、後で情報にアクセスするための不必要な努力が必要になると思います。さらに、マッピングを正しく行うのは少し面倒です。
代わりに、次のようなことができると考えました。
class A{
IList<Tuple<C, D>> ARelationship;
}
そうすれば、最初から 2 つの参照を一緒に持つことができます。しかし、そのようなマッピング (タプルのリスト) を行う方法の例を見つけることができませんでした。それを行うためにICompositeUserTypeサブクラスを定義できることがわかりましたが、それがどのように機能するか、またはそれを使用して問題を解決する方法を完全には理解していません。
私の質問は次のとおりです。そのような関係をモデル化する最良の方法は何ですか?
別のクラスを使用する場合 (方法 1)、各クラスの観点からそれをマップする最良の方法と、新しく定義されたクラスをマップする方法は?
タプルのリストを使用する場合、ICompositeUserType を使用せずにマップすることは可能ですか? どのように?
また、間違った Google 検索を行って答えを見逃した可能性もあります。他のオプションはありますか?