我在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;
}
答案 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();