我们有一个数据库正在创建一些多个级联路径错误。 我明白这意味着什么和发生了什么,但我想知道最好的方法,因为我们必须删除一些我们有的OnDelete Cascade选项。实体框架代码第一个周期或多个级联路径
这是我们的表结构:
SCHOOL
- SchoolId
- Name
- ....
STUDENT
- StudentId
- SchoolId
- Name
- ...
COURSE
- CourseId
- SchoolId
- Name
STUDENT-COURSE
- StudentId
- CourseId
- ....
- SchoolId FK在学生中删除所有删除学校
- SchoolId FK在课程删除所有删除时级联相关的课程时,在级联相关学生一所学校
- StudentId FK in Student-Course删除所有与级联相关的学生课程删除学生时
- CourseId FK in Student-course delete一切都删除时,当然
所以在这里我们有周期,因为删除一所学校的实体时,学生,课程将被从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);
这里的问题是,什么是最好的办法。
谢谢。
可能有更多的学生比课程,所以级联删除学生+学生课程更有效率。 –