En termes d'entités (ou d'objets), vous avez un Classobjet qui a une collection de Studentset un Studentobjet qui a une collection de Classes. Étant donné que votre StudentClasstable ne contient que les Id et aucune information supplémentaire, EF ne génère pas d'entité pour la table de jointure. C'est le comportement correct et c'est ce à quoi vous vous attendez.
Maintenant, lorsque vous faites des insertions ou des mises à jour, essayez de penser en termes d'objets. Par exemple, si vous souhaitez insérer une classe avec deux étudiants, créer l' Classobjet, les Studentobjets, ajouter les étudiants à la Studentscollection de la classe , ajouter l' Classobjet 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 Classtableau, deux entrées dans le Studenttableau et deux entrées dans le StudentClasstableau les reliant.
Vous faites essentiellement la même chose pour les mises à jour. Récupérez simplement les données, modifiez le graphique en ajoutant et supprimant des objets des collections, appelez SaveChanges. Consultez cette question similaire pour plus de détails.
Modifier :
Selon votre commentaire, vous devez en insérer un nouveau Classet y ajouter deux existants 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();
}
Comme les deux étudiants sont déjà dans la base de données, ils ne seront pas insérés, mais comme ils sont maintenant dans la Studentscollection de Class, deux entrées seront insérées dans la StudentClasstable.