複数のカスケードパスエラーが発生するデータベースがあります。 私はそれが何を意味し、何が起こっているのか理解していますが、私たちが持っているOnDelete Cascadeオプションのいくつかを削除しなければならないので、最良の方法を知りたいと思います。エンティティフレームワーク最初のサイクルコードまたは複数のカスケードパス
これが私たちのテーブル構造である:学生でSchoolId FKをカスケードに関連するすべての学生を削除
SCHOOL
- SchoolId
- Name
- ....
STUDENT
- StudentId
- SchoolId
- Name
- ...
COURSE
- CourseId
- SchoolId
- Name
STUDENT-COURSE
- StudentId
- CourseId
- ....
- 学校を削除するときに削除するときにコースで
- SchoolId FKはカスケードに関連するすべてのコースを削除します
- スチューデントコースのFKは、学生を削除するときにカスケードに関連するすべての学生コースを削除します。
- コース - 学生コースのFKを削除しますそこでここではもちろん
を削除するときに、学校を削除するとき、エンティティ学生-コースはサイクルを作成し、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);
ここで問題は、最善のアプローチがどうなるかです。
ありがとうございました。
おそらくコースよりも多くの学生がいるので、学生+学生コースのカスケード削除が効率的です。 –