从父集合中删除子记录

9 nhibernate parent-child

我正在开发一个示例应用程序,以便我可以了解NHibernate的细节.我正在努力解决删除问题.我希望能够通过从父集合中删除子记录然后保存父记录来删除子记录.我已经设置了双向一对多关系,插入/更新工作得很好.

这是我的映射

篮:

<bag name="Items" inverse="true" cascade="all"> <key column="BasketId" /> <one-to-many class="BasketItem" /> </bag>

BasketItem:

<many-to-one not-null="true" name="Basket" column="BasketId" />

我想打电话basket.RemoveBasketItem(BasketItem item),然后Session.SaveUpdate(basket)让篮筐项目将被删除.这可能吗?

moo*_*000 18

更改cascade="all"cascade="all-delete-orphan".

cascade="all" 如果父项被删除,则只会删除您的子记录.

  • 听起来像你以某种方式覆盖了持有你的篮子物品的`IList`参考.当列表引用为null时,你只能将自己的`IList`实现放在那里 - 如果你从DB加载一个篮子,NH会将自己的`PersistentBag`作为`IList`实现 - 你必须保留这个引用单独级联才能正常工作. (7认同)
  • 我通常使用AddItem/RemoveItem方法,然后让我的属性只返回一个IEnumerable <Item> - 这样,消费代码必须新建他们自己的List或他们想做的任何事情,并且他们从不会意外地修改持久列表. (3认同)