用HasMany关系插入父id的问题



我不明白为什么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)

我想补充一点,我不想用双向关系来解决这个问题,我不希望孩子有对父母的引用。谢谢! !

添加Not.KeyNullable()到您的HasMany映射

父类映射应该有子类的逆映射

public class ParentClassMap : ClassMap<Parent> 
{
    public ParentClassMap(){
        Id(x => x.ParentId);
        HasMany(x => x.Notes).Cascade.AllDeleteOrphan().Inverse();
    }
}

谢谢Neelesh

相关内容

  • 没有找到相关文章

最新更新