2010-12-17 9 views
0

子と親の関係を追加する必要があるのはなぜですか?関係を追加する方法(nhibernate)

 
Child child = Session.Get(1); 
Parent parent = Session.Load(1); 
parent.Children.Add(child); 
child.Parent = parent; 

使用インバース= trueの場合にはparent.Children.Add(子)なしで完璧に動作し、私は、現在のセッション(Web要求あたりのセッション)で子供のコレクションを必要としません。あなたは常に子供と親の関係を追加しますか?

答えて

2

設定child.Parent = parentは、関係を維持するのに十分です。

ただし、コレクションに子を追加しないと、カスケードを利用できなくなるため、子を明示的に永続化する必要があります。

また、サイドのいずれかを設定しないと、モデルがリロードされない限りコレクションに追加されないため、矛盾するメモリモデルが発生します。

2

私はあなたを正しく理解してくれることを願っています。

class Parent { List Children {get;set;} class Child { Parent Parent {get;set;}

ANS1。このシナリオでは、Inverseはnhibernateフレームワークに[親子関係]の制御メカニズムを子に委ねるように指示します(主に、どのオブジェクトが子の削除/更新を担当しているか)。子属性にInverse属性を使用すると、子はそれ自身の責任を負います。そうでない場合、親は子を削除する責任があります。

ANS2。ほとんどの場合、両方のプロパティ(Children、Parent)は必要ありません(子供に対してinverse = trueを指定すると必要です)。それは取得したい機能にのみ依存します。

これは簡単にあなたの質問に答えますか?

関連する問題