In Bezug auf Entitäten (oder Objekte) haben Sie ein ClassObjekt mit einer Sammlung von Studentsund ein StudentObjekt mit einer Sammlung von Classes. Da Ihre StudentClassTabelle 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 ClassObjekt, die StudentObjekte, fügen Sie die Schüler zur Klassensammlung hinzu Students, fügen Sie das ClassObjekt 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 ClassTabelle erstellt, zwei Einträge in der StudentTabelle und zwei Einträge in der StudentClassTabelle, 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 Classund 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 StudentsSammlung der befinden Class, werden zwei Einträge in die StudentClassTabelle eingefügt .