У нас есть база данных, которая создает несколько ошибок нескольких каскадных путей. Я понимаю, что это значит и что происходит, но я хотел бы знать лучший подход, так как мы должны удалить некоторые из параметров OnDelete Cascade, которые у нас есть.Первичные циклы Entity Framework или несколько каскадных путей
Это наша структура таблицы:
SCHOOL
- SchoolId
- Name
- ....
STUDENT
- StudentId
- SchoolId
- Name
- ...
COURSE
- CourseId
- SchoolId
- Name
STUDENT-COURSE
- StudentId
- CourseId
- ....
- SchoolId FK в Student удаляет все студенты, связанные с каскадом при удалении школы
- SchoolId FK в курсе удаляет все курсы, связанные с каскадом при удалении школа
- StudentId FK in Student-Course удаляет все студенческие курсы, связанные с каскадом при удалении студента
- CourseId FK in Student-Course delete S всех студентов-курсы, связанные с каскадом при удалении курса
Итак, мы имеем цикл, потому что при удалении школы объекта Student-курс будет удален из 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);
вопрос здесь, что бы быть лучшим подходом.
Спасибо.
Есть, вероятно, больше студентов, чем курсы, поэтому более эффективное использование каскадного удаления студентов + студенческих курсов. –