Pod względem bytów (lub obiektów) masz Classobiekt, który ma kolekcję Studentsi Studentobiekt, który ma kolekcję Classes. Ponieważ StudentClasstabela zawiera tylko identyfikatory i nie zawiera dodatkowych informacji, EF nie generuje jednostki dla tabeli łączącej. To jest właściwe zachowanie i tego właśnie oczekujesz.
Teraz, robiąc wstawki lub aktualizacje, staraj się myśleć kategoriami obiektów. Np. Jeśli chcesz wstawić klasę z dwoma uczniami, utwórz Classobiekt, Studentobiekty, dodaj uczniów do Studentskolekcji klas, dodaj Classobiekt do kontekstu i wywołaj 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();
}
Spowoduje to utworzenie wpisu w Classtabeli, dwóch wpisów w Studenttabeli i dwóch wpisów w StudentClasstabeli łączących je ze sobą.
Zasadniczo robisz to samo w przypadku aktualizacji. Wystarczy pobrać dane, zmodyfikować wykres, dodając i usuwając obiekty z kolekcji, zadzwoń SaveChanges. Sprawdź to podobne pytanie, aby uzyskać szczegółowe informacje.
Edycja :
Zgodnie z Twoim komentarzem musisz wstawić nowy Classi dodać Studentsdo niego dwa istniejące :
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();
}
Ponieważ obaj uczniowie są już w bazie danych, nie zostaną wstawieni, ale ponieważ znajdują się teraz w Studentskolekcji Class, do StudentClasstabeli zostaną wstawione dwa wpisy .