En términos de entidades (u objetos), tiene un Class
objeto que tiene una colección de Students
y un Student
objeto que tiene una colección de Classes
. Dado que su StudentClass
tabla solo contiene los ID y ninguna información adicional, EF no genera una entidad para la tabla de unión. Ese es el comportamiento correcto y eso es lo que esperas.
Ahora, cuando haga inserciones o actualizaciones, intente pensar en términos de objetos. Por ejemplo, si desea insertar una clase con dos estudiantes, cree el Class
objeto, los Student
objetos, agregue los estudiantes a la Students
colección de la clase , agregue el Class
objeto al contexto y llame 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();
}
Esto creará una entrada en la Class
tabla, dos entradas en la Student
tabla y dos entradas en la StudentClass
tabla uniéndolas.
Básicamente, haces lo mismo con las actualizaciones. Simplemente obtenga los datos, modifique el gráfico agregando y eliminando objetos de las colecciones, llame SaveChanges
. Consulte esta pregunta similar para obtener más detalles.
Editar :
De acuerdo con su comentario, debe insertar uno nuevo Class
y agregar dos existentes 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();
}
Dado que ambos estudiantes ya están en la base de datos, no se insertarán, pero como ahora están en la Students
colección de Class
, se insertarán dos entradas en la StudentClass
tabla.