En termes d'entités (ou d'objets), vous avez une Class
qui possède une collection de Students
y un Student
qui possède une collection de Classes
. Puisque votre StudentClass
ne contient que les Ids et aucune information supplémentaire, EF ne génère pas d'entité pour la table de jonction. C'est le comportement correct et c'est ce que vous attendez.
Maintenant, lorsque vous effectuez des insertions ou des mises à jour, essayez de penser en termes d'objets. Par exemple, si vous voulez insérer une classe avec deux étudiants, créez l'objet Class
l'objet Student
ajoutez les élèves à la classe Students
ajoute la collection Class
au contexte et appeler 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();
}
Cela créera une entrée dans le Class
deux entrées dans la table Student
et deux entrées dans la table StudentClass
table les reliant entre eux.
Vous faites essentiellement la même chose pour les mises à jour. Il suffit d'aller chercher les données, de modifier le graphe en ajoutant et en retirant des objets des collections, d'appeler SaveChanges
. Vérifier cette question similaire pour les détails.
Editar :
D'après votre commentaire, vous devez insérer une nouvelle Class
et ajouter deux Students
à ce sujet :
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();
}
Puisque les deux élèves sont déjà dans la base de données, ils ne seront pas insérés, mais puisqu'ils sont maintenant dans le fichier Students
collection de la Class
deux entrées seront insérées dans le StudentClass
table.