NHibernate が親の外部キーなしで子エンティティを挿入する理由がわかりません。これを解決するために私が見つけた唯一の方法は、双方向の関係を使用することです。別の方法はありますか?
クラスは次のとおりです。
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;}
}
これが私のFluent 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);
}
}
親の子コレクションに子を追加して親を保存すると、親と子がデータベースに挿入されますが、親への外部キーなしで子が挿入されます (null 値があります)。
これは、生成される挿入です。
INSERT INTO Child(ChildId, Name)
ただし、次のようにする必要があります。
INSERT INTO Child(ChildId, Name, ParentId)
これを双方向の関係で解決したくないことを付け加えておきます。子に親への参照を持たせたくありません。ありがとう!!