In termini di entità (o oggetti) hai un Class
oggetto che ha una raccolta di Students
e un Student
oggetto che ha una raccolta di Classes
. Poiché la tua StudentClass
tabella 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' Class
oggetto, gli Student
oggetti, aggiungi gli studenti alla Students
collezione della classe aggiungi l' Class
oggetto 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 Class
tabella, due voci nella Student
tabella e due voci nella StudentClass
tabella 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 Class
e 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 Students
raccolta di Class
, verranno inserite due voci nella StudentClass
tabella.