1

我有一个具有 1 个或多个产品关系的产品。

实体:产品和产品关系

所以产品有一个属性 List(Of ProductRelation)

现在我有一个复选框列表,我可以在其中选择要分配给该产品的许多产品。

当我使用新产品添加新的 ProductRelations 集合时,它应该删除所有旧关系并保存新关系。但这不起作用。它不会删除旧的,也不会保存新的。

我使用了以下 hbm.xml

<bag name="RelatedProduct" inverse="true" lazy="true" cascade="all">
  <key column="FromID" />
  <one-to-many class="Kiwa.Objects.RelatedProduct,Kiwa.Objects" />
</bag>
4

2 回答 2

1

您的 hbm 文件不可见。:)

但是,为什么要添加一个新集合?
这就是事情出错的原因。您应该清除集合(从集合中删除项目),并将新项目添加到集合中,而不替换集合本身。

于 2009-09-02T15:07:53.770 回答
0

一旦映射集合被持久化,您永远不应该替换它。NHibernate 需要特定的集合实例(由 NHibernate 在实体加载期间创建/注入)来跟踪删除。

您应该改为删除/更新/替换RelatedProduct现有集合中的单个元素(例如实例)。如果您真的想删除所有以前保存RelatedProduct的 s 并插入新的(为什么?),您可以清除RelatedProductList - 但不要用新List实例替换它。

于 2009-09-02T15:20:09.723 回答