С точки зрения сущностей (или объектов) у вас есть 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таблицу.