我不明白为什么 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);
}
}
当我将一个孩子添加到父母的孩子集合并保存父母时,父母和孩子都被插入到数据库中,但是孩子在没有外键的情况下被插入到父母身上(它有一个空值)
这是生成的插入:
INSERT INTO Child(ChildId, Name)
但它应该是:
INSERT INTO Child(ChildId, Name, ParentId)
我想补充一点,我不想通过双向关系来解决这个问题,我不希望孩子有对父母的引用。谢谢!!