С точки зрения сущностей (или объектов) у вас есть Class
объект, который имеет коллекцию, Students
и Student
объект, который имеет коллекцию Classes
. Поскольку ваша StudentClass
таблица содержит только идентификаторы и не содержит дополнительной информации, EF не создает сущность для присоединяемой таблицы. Это правильное поведение, и этого вы ожидаете.
Теперь, выполняя вставки или обновления, попробуйте мыслить объектами. Например, если вы хотите вставить класс с двумя учениками, создайте Class
объект, Student
объекты, добавьте учеников в Students
коллекцию классов, добавьте Class
объект в контекст и вызовите 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();
}
Это создаст запись в Class
таблице, две записи в Student
таблице и две записи в StudentClass
таблице, связывающие их вместе.
Вы в основном делаете то же самое для обновлений. Просто получите данные, измените график, добавив и удалив объекты из коллекций, вызовите SaveChanges
. Проверьте этот же вопрос для деталей.
Редактировать :
Согласно вашему комментарию, вам нужно вставить новый Class
и добавить 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();
}
Поскольку оба студента уже находятся в базе данных, они не будут вставлены, но поскольку они теперь находятся в Students
коллекции Class
, две записи будут вставлены в StudentClass
таблицу.