У меня есть followed the docs для настройки отношений «многие ко многим», используя таблицу соединений, которая отображается как сущность.Как моделировать удаление в отношениях EF Core со многими?
Но в документах не упоминается, что я должен сделать для удаления.
Так, например, у Student
много учителей, а у Teacher
много учеников. Объект объединения/таблица - StudentTeacher
.
Джойн стол/организация:
public class StudentTeacher {
public int StudentId { get; set; }
public Student Student { get; set; }
public int TeacherId { get; set; }
public Teacher Teacher { get; set; }
}
конфиг для присоединения таблицы/лица:
modelBuilder.Entity<StudentTeacher>()
.HasOne(b => b.Teacher)
.WithMany(b => b.StudentTeachers)
.HasForeignKey(b => b.TeacherId)
.IsRequired()
.OnDelete(/* ... what goes here? ...*/);
modelBuilder.Entity<StudentTeacher>()
.HasOne(b => b.Student)
.WithMany(b => b.StudentTeachers)
.HasForeignKey(b => b.StudentId)
.IsRequired()
.OnDelete(/* ... what goes here? ...*/);
Что я использую в OnDelete()
? И почему?
Да, вы правы. Это то, что я сделал большинство моих таблиц отношений. Как насчет того, что я не хочу удалять отношения на стороне db? Мне нужно регистрировать или архивировать некоторые важные отношения. В этом примере ученика учителя это не обязательно, но у меня такая ситуация. Что бы вы сделали или предложили что-нибудь? @grokky – kizilsu
@kizilsu Я считаю, что проще всего установить триггер на db и создать журнал аудита таким образом. Или, сопоставьте его в EF и создайте запись каждый раз, когда вы удаляете. – grokky