Ich habe ein Problem mit dem Auffüllen der richtigen Werte in einer Junction-Tabelle für eine viele zu viele Beziehung. Im Bild unten habe ich vereinfacht, was ich versuche zu tun. Die "Tabelle links" enthält Werte in der Datenbank, die ich verwenden möchte. Die Tabelle auf der rechten Seite erhält neue Datensätze. Es hat eine Navigationseigenschaft für die Junction-Tabelle und das gleiche gilt für die Tabelle auf der linken Seite. Die Junction-Tabelle hat Navigationseigenschaften zu beiden Tabellen auf ihrer Rückseite und sie sind auf erforderliche festgelegt.Ef6, Viele zu viele, Einfügungen und Primärschlüssel
Wenn ich die neuen Datensätze in der Tabelle auf der rechten Seite zu erstellen, ich auch hinzufügen, um es in der Verknüpfungstabelle aufzeichnet. Die TOL_ID ist bekannt, da sie in der Datenbank gespeichert ist, aber die TOR_ID wird gerade erstellt und ist daher unbekannt. Wenn ich versuche, die SaveChanges in meinem Kontext aufzurufen, versucht es, die Junction-Tabellensätze zuerst zu speichern, bevor die TOR_IDs für den Datensatz auf der rechten Seite aufgefüllt wurden. Ich denke, dass das Markieren der Navigationseigenschaft Erforderlich dem EF verdeutlichen würde, dass TOR_ID vorhanden sein muss, bevor die Junction-Tabellenzeile erstellt wird. Stattdessen wird versucht, eine vorhandene TOL_ID und 0 einzufügen, was zu einer Verletzung führt, wenn versucht wird, viele Tabellen in die richtigen Datensätze einzufügen, die mit derselben TOL_ID verbunden sind.
Anmerkung: Speichern der TOR_IDs zuerst und dann mit Anschlusssätzen verbindet, ist keine Option, da die Erstellung der Verbindungstabellensätze Teil einer „Slowly changing dimension“ Typ 6 Strömung sind.
Dies ist, wie es wirklich aussieht in dem Code:
// The newRating is the new object corresponding the Table on the right
var newRating = new ModuleRating()
{
// The moduleRating.RatedDriveUnit already exists in the db
RatedDriveUnit = moduleRating.RatedDriveUnit
};
newModule.Ratings.Add(newRating);
Können Sie den Code bereitstellen, der die Datensätze verarbeitet? –
@ S.Dav Ich werde es oben veröffentlichen. – Midas
Sie müssen JT_ID zu TOR- und TOL-Tabellen hinzufügen. – Mehmet