我们有一个数据库,该数据库正在创建某些多个级联路径错误。我确实了解这是什么意思和正在发生的事情,但是我想知道最好的方法,因为我们必须删除一些我们拥有的一些耗尽的级联选择。
这是我们的表结构:
SCHOOL
- SchoolId
- Name
- ....
STUDENT
- StudentId
- SchoolId
- Name
- ...
COURSE
- CourseId
- SchoolId
- Name
STUDENT-COURSE
- StudentId
- CourseId
- ....
- shindid fk in Student删除了删除学校时与级联相关的所有学生
- schoolid fk当然,删除学校时删除级联中有关的所有课程
- 学生课程中的学生ID FK删除级联的所有与学生相关的学生表演
- 学生课程中的课程ID FK删除课程时删除级联中有关的所有学生表演
所以我们有周期,因为在删除学校时,实体学生课程将从两个不同的方面删除,创建周期。
我了解这里发生了什么:
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);
这里的问题是最好的方法。
谢谢。
我会从学校删除级联删除,然后将其他人视为删除学校时,添加一些逻辑以删除相关的学生,课程(但他的课程保持了删除的一致性在较低的水平)。如果您从学生的删除级联删除Cascade上,则需要手动添加删除逻辑以使他们首先清洁相关的学生课程,并且与课程删除不一致(在删除逻辑方面不一致)。p>