您好我在以下场景中更新子对象时遇到问题。
映射如下:
家长:日历
<bag name="defaultCategories" inverse="true" lazy="false"
cascade="all-delete-orphan">
<key column="parentID" />
<one-to-many class="DefaultCategory"/>
</bag>
子项:DefaultCategory
<class name="DefaultCategory" table="tb_calendar_default_category" lazy="false">
<id name="id" column="id">
<generator class="hilo"/>
</id>
<many-to-one name="calendar" column="parentID" not-null="true"
cascade="all-delete-orphan" />
用于更新日历的代码:
public Calendar Update(Calendar vo)
{
session = NHibernateHelper.GetCurrentSession();
tx = session.BeginTransaction();
using (tx)
{
session.Update(vo);
tx.Commit();
}
return vo;
}
问题是,当我通过 ui 添加或删除 defaultCategories 并将日历的更新版本发送回后端时,NHibernate 会返回更新的日历,一切看起来都很好。但是,任何应该被删除的 defaultCatergories 都保留在默认的 Categories 表中。因此,当我刷新 ui 并再次调用日历时,我可以看到集合没有改变。
您是否认为我需要按 parentID 删除所有 defaultCatergories 然后重新创建?我的印象是 NHibernate 会为你解决这个问题?非常感谢任何帮助或指示。