In termini di entità (o oggetti) hai un Classoggetto che ha una raccolta di Studentse un Studentoggetto che ha una raccolta di Classes. Poiché la tua StudentClasstabella contiene solo gli ID e nessuna informazione aggiuntiva, EF non genera un'entità per la tabella di unione. Questo è il comportamento corretto ed è quello che ti aspetti.
Ora, quando esegui inserimenti o aggiornamenti, prova a pensare in termini di oggetti. Ad esempio, se vuoi inserire una classe con due studenti, crea l' Classoggetto, gli Studentoggetti, aggiungi gli studenti alla Studentscollezione della classe aggiungi l' Classoggetto al contesto e chiama 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();
}
Questo creerà una voce nella Classtabella, due voci nella Studenttabella e due voci nella StudentClasstabella collegandole insieme.
Fondamentalmente fai lo stesso per gli aggiornamenti. Basta recuperare i dati, modificare il grafico aggiungendo e rimuovendo oggetti dalle collezioni, chiamare SaveChanges. Controlla questa domanda simile per i dettagli.
Modifica :
Secondo il tuo commento, devi inserirne uno nuovo Classe aggiungerne due esistenti 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();
}
Poiché entrambi gli studenti sono già nel database, non verranno inseriti, ma poiché sono ora nella Studentsraccolta di Class, verranno inserite due voci nella StudentClasstabella.