我们有一个数据库正在创建一些多级联路径错误。 我确实理解这意味着什么,以及发生了什么,但我想知道最好的方法,因为我们必须删除一些OnDelete Cascade选项。
这是我们的表结构:
SCHOOL
- SchoolId
- Name
- ....
STUDENT
- StudentId
- SchoolId
- Name
- ...
COURSE
- CourseId
- SchoolId
- Name
STUDENT-COURSE
- StudentId
- CourseId
- ....
所以这里我们有了循环,因为在删除学校时,实体学生课程将从2个不同的方面删除,创建循环。
我明白这里会发生什么:
HasMany(p => p.Students)
.WithRequired(p => p.School)
.HasForeignKey(p => p.SchoolId)
.WillCascadeOnDelete(true);
我知道我能做到:
HasMany(p => p.Students)
.WithRequired(p => p.School)
.HasForeignKey(p => p.SchoolId)
.WillCascadeOnDelete(false);
这里的问题是什么是最好的方法。
感谢。
答案 0 :(得分:1)
我会删除学校的删除级联,并保留其他原样,并在删除学校时添加一些逻辑来删除相关学生,课程(但他保持较低级别删除的一致性)。 如果您从学生中删除删除级联,您将需要手动添加删除逻辑,以便他们首先清理相关的学生课程,并且将以某种方式与删除课程不一致(层次结构级别在删除逻辑方面不一致)。