我們有一個數據庫正在創建一些多個級聯路徑錯誤。 我明白這意味着什麼和發生了什麼,但我想知道最好的方法,因爲我們必須刪除一些我們有的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);
這裏的問題是,什麼是最好的辦法。
謝謝。
可能有更多的學生比課程,所以級聯刪除學生+學生課程更有效率。 –