NHibernate Deleted对象将通过级联重新保存

在我的解决方案中,我有一个带关联的业务对象分支。 因此,当我尝试在处理后保存根对象时,我得到一个exception,其中包含消息“已删除的对象将通过级联重新保存”。 这意味着在删除对象后,它仍然存在于集合中,其他关联等等。 有人知道如何获取已删除对象的引用列表。 没有调试器支持很难找到引用。

最常见的场景(我的经验)是有两个根对象具有一些配对/中间对象的集合。

public class Employee { public virtual IList Occupations { get; set; } } public class Company { public virtual IList Occupations { get; set; } } 

现在,我们有这样的Occupation

 public class Occupation { public virtual Employee Employee { get; set; } public virtual Company Company { get; set; } } 

那么,会发生什么:

  1. 我们从employee.Occupations集合中删除了一个职业
  2. 在那次交易,工作单位,我们也因此负责Company
  3. 公司成立了。 它的职业集合被加载。 所以删除职业的提法保留在那里
  4. NHibernate说: Deleted object would be re-saved by cascade

解决方案(S):

  • 确保公司永远不会被加载(作为代理)
  • Remove()职业也来自company.Occupations
  • 不要在公司方面使用这样的映射:

(不要使用级联)

  // this above setting on Company side is making issues...    

上述解决方案对我不起作用。 我试图删除的实例在我的代码中没有被引用。

但是,它是在NHhibernate。 清除会话后,它对我有用。