流畅的nhibernate映射与非空外键(HasMany)

时间:2012-09-12 09:34:26

标签: c# nhibernate fluent-nhibernate

我在nhibernate中有以下映射。 当我调用Session.Merge(myparent)时,插件上出现错误,指示NULL无法插入外键(ParentItemId)列。

如何调整映射以便在插入时插入父键。如果我使外键可以为空,则此映射有效,但会向数据库发出两个单独的语句。

这种关系是一对多的,没有引用回到子类的父级

  • 子类没有父属性。
  • 孩子依赖父母。

    HasMany(map => map.Children).Table("ChilrenTable")
       .KeyColumn("ParentItemId") // this is not nullable.
       .Cascade
       .AllDeleteOrphan();
    

    示例更新

    // entity here is the parent instance, which contains the list
    // of children.
    using (var tx = Session.BeginTransaction())
    {
        entity = Session.Merge(entity); // this line causes the problem.
        Session.SaveOrUpdate(entity);
        Session.Flush();
        tx.Commit();
        return entity;
    }
    
  • 1 个答案:

    答案 0 :(得分:3)

    Inverse Attribute in NHibernate

    HasMany(map => map.Children).Table("ChilrenTable")
       .KeyColumn("ParentId") // this is not nullable.
       .Inverse()  // <--- This is the key here
       .Cascade
       .AllDeleteOrphan();