В терминах сущностей (или объектов) у вас есть 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
. Проверьте this similar question.
Edit:
По вашему комментарию, вам нужно вставить новый 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();
}
Так как студенты уже находятся в базе данных, они выиграли 't будет вставлен, но поскольку они теперь находятся в коллекции Students
Class
, две записи будут вставлены в таблицу StudentClass
.
Привет, Спасибо за ваш ответ. Мой сценарий заключается в том, что мне нужно вставить 1 запись в класс и как x ваш пример 2 записи в StudentClass и не войти в Student. Я смущен, как я это делаю – user9969 2010-11-23 11:54:49
ТО, ЧТО РАБОТАЕТ ЛЕЧЕНИЕ . Относительно обновления. Мне нужно что-то особенное, EG. Просто обновляя className, например. – user9969 2010-11-23 13:50:18
Не знаете, что вы подразумеваете под `есть ли что-нибудь особенное, что мне нужно? ... Да, вы можете обновить имя и добавить/удалить элементы в/из коллекции учеников. Просто убедитесь, что вы не меняете `Id`. Если у вас есть особые проблемы с обновлением, не стесняйтесь публиковать сценарий здесь как комментарий, и я посмотрю. – Yakimych 2010-11-23 13:53:50