Nhibernate NHibenate级联问题

Nhibernate NHibenate级联问题,nhibernate,hibernate,nhibernate-mapping,Nhibernate,Hibernate,Nhibernate Mapping,您好,我在以下场景中更新子对象时遇到问题 映射如下所示: 家长:日历 <bag name="defaultCategories" inverse="true" lazy="false" cascade="all-delete-orphan"> <key column="parentID" /> <one-to-many class="DefaultCategory"/> </bag> 问题是,当我通过ui添加或删除de

您好,我在以下场景中更新子对象时遇到问题

映射如下所示:

家长:日历

  <bag name="defaultCategories"  inverse="true" lazy="false" 
    cascade="all-delete-orphan">
  <key column="parentID" />
  <one-to-many class="DefaultCategory"/>
  </bag>
问题是,当我通过ui添加或删除defaultCategories并将日历的更新版本发送回后端时,NHibernate会返回更新后的日历,一切看起来都很好。但是,应删除的任何DefaultCategories都保留在DefaultCategories表中。因此,当我刷新ui并再次调用日历时,我可以看到集合没有更改

您认为我需要按parentID删除所有DefaultCatergorities,然后重新创建吗? 我以为是NHibernate帮你处理的?
非常感谢您的帮助或指点。

我想知道NHibernate是否没有将日历识别为现有实例。查看文档,看看向映射添加未保存的值属性是否有帮助。

是默认的flushmode OnCommit吗?如果不是这样,那么在提交之前刷新会话将解决问题


你所做的应该有用。

谢谢你。我只是查看了一下,并遵循了使用saveUpdate的建议。然而,仍然存在同样的问题。也就是说,假设我有3个子对象,删除2个并更新。我仍然会在数据库中得到3个。嗯,回到绘图板上。
<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;
    }