使用nhibernate更新子表中的问题

使用nhibernate更新子表中的问题,nhibernate,Nhibernate,在nhibernate,我有两张桌子,父母和孩子 父->父ID,名称 子->子ID、名称、父ID 关系->一对多 如果我同时在父表中插入一条记录,我将在子表中插入多条记录,而不会出现任何问题 但是如果我更新父记录,子表记录将不会更新,而不是再次插入 下面是我的映射代码 家长: Child:Referencesx=>x.Parent.Not.LazyLoad 很可能是儿童使用的Id生成器。SaveOrUpdate不将它们视为持久化,并尝试插入它们。通常未保存的值0可以实现此目的 另外,最好使用反向

在nhibernate,我有两张桌子,父母和孩子

父->父ID,名称

子->子ID、名称、父ID

关系->一对多

如果我同时在父表中插入一条记录,我将在子表中插入多条记录,而不会出现任何问题

但是如果我更新父记录,子表记录将不会更新,而不是再次插入

下面是我的映射代码

家长:


Child:Referencesx=>x.Parent.Not.LazyLoad

很可能是儿童使用的Id生成器。SaveOrUpdate不将它们视为持久化,并尝试插入它们。通常未保存的值0可以实现此目的

另外,最好使用反向集合来告诉NH孩子们对关联负责

HasMany(x => x.Child)
      .Not.LazyLoad()
      .Inverse()
      .Cascade.All();

// eg: in Parent class
public void Add(Child child)
{
    Childs.Add(child);
    child.Parent = this;
}
我找到了解决办法:

使用以下代码更改父映射文件它将删除旧的子数据并在子表中插入新记录

HasMany(x => x.Child)
              .Not.LazyLoad()              
              .Cascade.AllDeleteOrphan();

显示用于修改父记录的代码。
HasMany(x => x.Child)
              .Not.LazyLoad()              
              .Cascade.AllDeleteOrphan();