在我的解决方案中,我有一个带关联的业务对象分支。因此,当我尝试在处理后保存根对象时,我得到一个异常,并显示消息“已删除的对象将通过级联重新保存”。这意味着删除一个对象后它仍然存在于集合中,其他关联等等。有人知道如何获取已删除对象的引用列表。 如果没有调试器支持,很难找到引用。
答案 0 :(得分:6)
最常见的情况(我的经验)有两个根对象,其中包含一些配对/中间对象的集合。
public class Employee
{
public virtual IList<Occupation> Occupations { get; set; }
}
public class Company
{
public virtual IList<Occupation> Occupations { get; set; }
}
现在,我们有Occupation
这样的
public class Occupation
{
public virtual Employee Employee { get; set; }
public virtual Company Company { get; set; }
}
那么,会发生什么:
employee.Occupations
集合中删除职业。Company
Deleted object would be re-saved by cascade
解决方案:
Remove()
职业也来自company.Occupations
(不使用级联)
<bag name="Occupations" lazy="true" inverse="true" batch-size="25"
cascade="all-delete-orphan">
// this above setting on Company side is making issues...
<key column="Company_ID" />
<one-to-many class="Occupation" />
</bag>
答案 1 :(得分:0)
以上解决方案对我不起作用。我试图删除的实例在我的代码中没有引用。
然而,它是在NHhibernate。清除会话后,它对我有用。