Entity Framework Code zuerst: Zyklen oder mehrere Kaskadenpfade
Ich habe eine Buchungsklasse mit einem Buchungskontakt (aPerson
) und eine Reihe von Navigationseigenschaften People
), das über eine Verknüpfungstabelle mit einer anderen Gruppe von Navigationseigenschaften verknüpft ist Bookings
) imPerson
. Wie erstelle ich dasBooking
table mit aktivierten kaskadierenden Löschvorgängen für die Buchungskontaktbeziehung? Wenn ich den fließenden API-Code weglasse (Standardeinstellung für Kaskadenlöschung aktiviert), wird bei der Migration die folgende Fehlermeldung angezeigt:
Die Einführung der FOREIGN KEY-Einschränkung 'FK_dbo.BookingPeople_dbo.People_PersonID' in der Tabelle 'BookingPeople' kann zu Zyklen oder mehreren Kaskadenpfaden führen. Geben Sie ON DELETE NO ACTION oder ON UPDATE NO ACTION an oder ändern Sie andere FOREIGN KEY-Einschränkungen.
Bedingung oder Index konnte nicht erstellt werden. Siehe vorherige Fehler.
modelBuilder.Entity<Person>()
.HasMany<Booking>(s => s.aBookings)
.WithRequired(s => s.Contact)
.HasForeignKey(s => s.ContactId);
modelBuilder.Entity<Booking>()
.HasMany(t => t.People)
.WithMany(t => t.Bookings)
.Map(m => {
m.ToTable("BookingPeople");
m.MapLeftKey("BookingID");
m.MapRightKey("PersonID");
});