9

我正在开发一个示例应用程序,以便了解 NHibernate 的来龙去脉。我正在努力解决删除问题。我希望能够通过从其父集合中删除子记录然后保存父记录来删除它。我已经建立了一个双向的一对多关系,并且插入/更新效果很好。

这是我的映射

篮子:

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

篮子物品:

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

我想打电话basket.RemoveBasketItem(BasketItem item)然后Session.SaveUpdate(basket)删除购物篮项目。这可能吗?

4

4 回答 4

18

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

cascade="all"如果父级被删除,只会删除您的子级记录。

于 2009-06-12T10:44:59.373 回答
2

我有同样的场景,我在 bagList 中使用了 cascade="all-delete-orphan" 但是当我删除集合中的单个子项时,它也会删除父对象。

于 2010-01-08T06:18:22.260 回答
0

我遇到了与 initforthemoney 相同的问题,因为从我的集合获取器中返回了一个新列表作为 ReadOnly。nosetter我发现我可以通过将集合的属性访问策略从 更改为来继续使用 ReadOnly 列表field

于 2012-01-31T01:25:46.377 回答
0

我有一个问题,我的孩子元素返回一个有序的可枚举。

private readonly IList<Child> children;

public virtual IEnumerable<Child> Children { get { return children.OrderBy(c => c.Position); } }

public virtual void DeleteChild(Child item)
{
    children.Remove(item);
}

我将排序移动到我的映射中,并将子代返回给 IEnumerable。这对我有用!

于 2015-07-15T20:00:34.673 回答