NHibernateが親の外部キーなしで子エンティティを挿入している理由を理解できません。 これを解決するために私が見つけた唯一の方法は、双方向関係です。別の方法がありますか?ここでFluent NHibernateはHasMany関係に親IDの問題を挿入します
はクラスです:私は親の子コレクションに子を追加し、親、親と子を保存するとここで
public class Parent
{
public virtual int ParentId {get; private set;}
public virtual IList<Child> Notes {get; private set;}
}
public class Child
{
public virtual ChildId {get; private set;}
public virtual Name {get; private set;}
}
は私の流暢NHibernateのマッピングは
public class ParentClassMap : ClassMap<Parent>
{
public ParentClassMap(){
Id(x => x.ParentId);
HasMany(x => x.Notes).Cascade.AllDeleteOrphan();
}
}
public class ChildClassMap : ClassMap<Child>
{
public ChildClassMap() {
Id(x => x.ChildId);
Map(x => x.Name);
}
}
されていますデータベースに挿入されましたが、子は親に外部キーなしで挿入されています(ヌル値)
これは生成される挿入物です:
INSERT INTO Child(ChildId, Name)
しかし、それは次のようになります。私は双方向の関係でこれを解決しないことを追加したい
INSERT INTO Child(ChildId, Name, ParentId)
、私は子供が親への参照を持っている必要はありません。 。ありがとう!!
これは、双方向の関連付けがないため、保存操作がまったく行われません。 – cremor
あなたはあなたが言ったことは間違いありません。関係が双方向にならない理由は何ですか? – Neelesh
ドメインクラスで双方向の関連付けが不要(または必要)である可能性が高いためです。保存するためのオブジェクト参照を持つことは、あまり「永続性を知らない」ことではありません。 – cremor