我的产品有一个或多个产品关系。
实体:产品和产品关联
因此产品具有属性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>
答案 0 :(得分:1)
您的hbm文件不可见。 :)
但是,为什么要添加新的系列呢? 这就是事情出错的原因。 您应该清除集合(从集合中删除项目),只需将新项目添加到集合中,而不替换集合本身。
答案 1 :(得分:0)
一旦持久存储,您应该从不替换已映射的集合。 NHibernate需要特定的集合实例(在实体加载期间由NHibernate创建/注入)来跟踪删除。
您应该删除/更新/替换现有集合中的单个元素(例如RelatedProduct
个实例)。如果您确实要删除之前保存的所有RelatedProduct
并插入新的{为什么?),则可以清除RelatedProduct
列表 - 但不要将其替换为新的List
实例