我得到的错误很常见,但是我没有找到任何与我的场景相符的答案:
实体:
学校 老师 学生
映射:
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);
}
这里发生的是,当我去保存“学生”时,我得到了可怕的“已删除的对象将被级联重新保存”错误。
一如既往,任何帮助都非常感激。
答案 0 :(得分:0)
你的映射的其余部分是什么样的?学校和学生之间的反向设置是什么?
尝试mapping.HasMany(x => x.Students).Cascade.AllDeleteOrphan().Inverse()
。