如何使用Fluent NHibernate删除引用的对象(ye olde“删除的对象将通过级联保存”)

时间:2011-09-28 16:34:17

标签: fluent-nhibernate

我得到的错误很常见,但是我没有找到任何与我的场景相符的答案:

实体:

学校 老师 学生

映射:

School:  mapping.HasMany(x => x.Students).Cascade.AllDeleteOrphan();
Student: 
      mapping.References(x => x.Teacher).Not.Nullable().Cascade.SaveUpdate();
      mapping.References(x => x.School).Not.Nullable().Cascade.SaveUpdate();
Teacher: 
      mapping.References(x => x.School).Not.Nullable().Cascade.SaveUpdate();
      mapping.HasMany(x => x.Students).Cascade.All().Inverse();

场景:学生与没有其他学生或教师的学校相关联。如果我想将学生链接到另一所学校,我想删除孤儿学校。

if (oldSchool.Students.Count == 1 && oldSchool.Teachers.Count == 0)
{
    //delete it
    //oldSchool.Students.Remove(student);
    student.School = null;

    _schoolRepository.Delete(oldSchool);
}

这里发生的是,当我去保存“学生”时,我得到了可怕的“已删除的对象将被级联重新保存”错误。

一如既往,任何帮助都非常感激。

1 个答案:

答案 0 :(得分:0)

你的映射的其余部分是什么样的?学校和学生之间的反向设置是什么?

尝试mapping.HasMany(x => x.Students).Cascade.AllDeleteOrphan().Inverse()