вставка данных во многие ко многим отношениям в рамках сущности - PullRequest
0 голосов
/ 20 ноября 2011

У меня есть две таблицы (пользователи, сообщения), которые для них имеют отношение многие ко многим. Я хочу добавить новые сообщения в таблицу сообщений и распределить массаж для текущих пользователей. Также я вставляю данные, как показано ниже:

Message newMessage = Message.CreateMessage("MessageText", "DateTime");
newMessage.Users.Add(new User{..... });
context.SaveChange();

этот код будет выполнять запрос, который добавляет нового пользователя в таблицу пользователей, в то время как в таблице пользователей есть несколько указанных пользователей, и я не хочу добавлять нового пользователя, но, как я уже говорил, я хочу добавить новые сообщения в таблицу сообщений и выделить массаж для текущих пользователей.

как мне это сделать?

1 Ответ

0 голосов
/ 20 ноября 2011

Проблема в том, что вы создаете новый объект User с существующим первичным ключом. Когда вызывается SaveChanges(), EF обнаруживает изменения объектов, которые уже отслеживаются, и добавляются новые объекты. Поскольку ваш новый User объект не отслеживался EF, он пытается вставить его.

Вам необходимо явно указать EF, что созданный пользователь является существующим. Для этого вам нужно прикрепить это.

Message newMessage = Message.CreateMessage("MessageText", "DateTime");

var user = new User{ Id = "foo" };
context.Users.Attach(user);

newMessage.Users.Add(user);    
context.SaveChange();
...