In Bezug auf Entitäten (oder Objekte) haben Sie ein Class
Objekt mit einer Sammlung von Students
und ein Student
Objekt mit einer Sammlung von Classes
. Da Ihre StudentClass
Tabelle nur die IDs und keine zusätzlichen Informationen enthält, generiert EF keine Entität für die Verknüpfungstabelle. Das ist das richtige Verhalten und das erwarten Sie.
Versuchen Sie nun beim Einfügen oder Aktualisieren, in Objekten zu denken. Wenn Sie beispielsweise eine Klasse mit zwei Schülern einfügen möchten, erstellen Sie das Class
Objekt, die Student
Objekte, fügen Sie die Schüler zur Klassensammlung hinzu Students
, fügen Sie das Class
Objekt zum Kontext hinzu und rufen Sie auf SaveChanges
:
using (var context = new YourContext())
{
var mathClass = new Class { Name = "Math" };
mathClass.Students.Add(new Student { Name = "Alice" });
mathClass.Students.Add(new Student { Name = "Bob" });
context.AddToClasses(mathClass);
context.SaveChanges();
}
Dadurch wird ein Eintrag in der Class
Tabelle erstellt, zwei Einträge in der Student
Tabelle und zwei Einträge in der StudentClass
Tabelle, die sie miteinander verbinden.
Grundsätzlich tun Sie dasselbe für Updates. Rufen Sie einfach die Daten ab, ändern Sie das Diagramm, indem Sie Objekte zu Sammlungen hinzufügen und daraus entfernen SaveChanges
. Überprüfen Sie diese ähnliche Frage für Details.
Bearbeiten :
Gemäß Ihrem Kommentar müssen Sie eine neue einfügen Class
und zwei vorhandene hinzufügen Students
:
using (var context = new YourContext())
{
var mathClass= new Class { Name = "Math" };
Student student1 = context.Students.FirstOrDefault(s => s.Name == "Alice");
Student student2 = context.Students.FirstOrDefault(s => s.Name == "Bob");
mathClass.Students.Add(student1);
mathClass.Students.Add(student2);
context.AddToClasses(mathClass);
context.SaveChanges();
}
Da sich beide Schüler bereits in der Datenbank befinden, werden sie nicht eingefügt. Da sie sich jedoch jetzt in der Students
Sammlung der befinden Class
, werden zwei Einträge in die StudentClass
Tabelle eingefügt .