正如标题所说,基本上我想做的就是改变孩子的父母。但是当我尝试这样做时,我得到了异常“ObjectDeletedException:已删除的对象将被级联重新保存(从关联中删除已删除的对象)”。
我已经在谷歌上搜索了几个小时,但我找到的解决方案都没有为我工作!
这些是我参与的课程:
public class Parent: Entity
{
public virtual IList<Child> Children { get; set; }
}
public class Child: Entity
{
public virtual DateTime? CancellationDate { get; set; }
}
实体类是具有 Id 属性的实体。
这是父级的映射(Parents.hbm.xml):
<bag name="Children" cascade="all-delete-orphan" table="Schema.Child" where="CancellationDate is null">
<key column="ParentID"/>
<one-to-many class="Namespace.Child"/>
</bag>
这是我尝试将孩子重新分配给另一个父母的代码:
foreach(Child c in Parent1.Children)
{
Parent2.Children.Add(c);
}
但是随后,session.Flush()
抛出了上面的异常。我想问题是因为孩子改变了他的父母,因为级联NHibernate将不得不消除孩子,但后来它被重新分配给另一个父母,所以再次因为级联,它必须重新保存孩子。
我已经尝试更改映射,并从前父母的集合中删除子项(在我将其分配给另一个父母之前或之后),但这些都不起作用......
任何帮助将不胜感激!
谢谢!!