2011-09-08 1 views
0

を使用して:アップデート子供のForeignKey私は次のオブジェクトを持っている場合は、ステートレスセッション1を使用している間は、明示的にオブジェクトの関連(子)</p> <p>を保存しなければならないことを理解しNHibernateのステートレスセッションに

public class Parent() 
{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
    public IList<Child> Childs {get;set;} 
} 

public class Child() 
{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
} 

私はインスタンスを変更親の子を追加して、次のステートメントを使用して親子を保存します。

statelesssession.Update(parentInstance); 
statelesssession.Insert(parentInstance.Childs.Last()); 

子レコードであるが、子テーブルのフィールドParent_Idはnullのままであるため、関連は記録されない。

ステートレスセッションを使用して手動で関連付けを記録するにはどうすればよいですか?

答えて

0

Childmany-to-oneプロパティは、Parentを指していません。これは、NHibernateがParent_idカラムの保存に使用するものです。

public class Child 
{ 
    public int Id {get;set;} 
    public Parent Parent {get;set;} // this is missing 
    public string Name {get;set;} 
} 

...と対応するNHibernateマッピングが必要です。また、子を親に追加するときには、child.Parentの値を設定することを確認してください。

説明するイベントのシーケンス(「私は親のインスタンスを作成して1人の子を追加します)」Updateではなく、親に対してInsertが表示されます。

+0

はい、私は関係が片方向、親から子のみであることを望みます。私は片方の関係でこれを達成する方法を意味しました。 – aattia

+0

親クラスへの参照がない場合は、少なくとも、子の親IDにマップされたフィールドが必要です。その時点の他の列と同じです。 –

関連する問題

 関連する問題