您好我在更新子对象在以下方案中有问题。NHibenate级联问题
的映射如下:
家长:日历
<bag name="defaultCategories" inverse="true" lazy="false"
cascade="all-delete-orphan">
<key column="parentID" />
<one-to-many class="DefaultCategory"/>
</bag>
儿童:DefaultCatergory
<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;
}
的概率lem是,当我通过ui添加或删除defaultCategories并将更新后的日历版本发送回后端时,NHibernate会返回更新的日历,并且一切都很顺利。但是任何应该删除的defaultCatergories都将保留在默认的Categories表中。因此,当我刷新UI并再次调用日历时,我可以看到收集没有改变。
您是否认为我需要通过parentID删除所有defaultCatergories然后重新创建? 我以为NHibernate为您照顾这件事吗? 任何帮助或指针非常感谢。
谢谢。我只是看着它,并遵循使用saveUpdate的建议。但是,仍然是同样的问题。那就是说,我有3个子对象,删除2并更新。我仍然会在db中结束3。嗯,回到绘图板。 – user17510 2009-02-25 10:14:06