З точки зору сутностей (або об'єктів) у вас є 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
таблицю.