table-per-hierarchy,引用相同的父类型:deletes在不同类型的子类上级联

时间:2011-11-20 13:48:39

标签: nhibernate nhibernate-mapping

我有一个共同的超类(假设它是Employee),其中包含(等等)子类EngineerSalesman
Employee类的表结构使用table-per-hierarchy建模。

Department对象引用销售人员和工程师:

public class Department
    {
        public IEnumerable<Engineer> Engineers { get; set; }
        public IEnumerable<Salesman> Salesmen { get; set; }
    }

当我从Engineer清空Department集合时出现问题:

  • 当两个关系都与cascade=nonecascade=allDepartment侧)映射时,所有Salesman条记录的外键设置为null(此处)是nHib生成的语句:UPDATE dbo.Employee SET Department_id = Null WHERE Department_id = @p0;
  • 当两个关系都与cascade=all-delete-orphan映射时,我得到一个ObjectDeletedException引用一个完全不同的Department对象集合(无法想出这个)
  • 在使用cascade=allcascade=none以及每个子类策略的表进行映射时,所有内容似乎都正常工作
  • 在使用cascade=all-delete-orphan和表每个子类策略进行映射时,我再一次得到ObjectDeletedException引用Department对象的完全不同的集合

显然我在这里缺少一些nHib基本...但它是什么?

1 个答案:

答案 0 :(得分:0)

duhh .... inverse=true在这些集合的父类上 仍然不确定是什么原因引起了看似无关的ObjectDeletedException虽然......