Entity Framework 4, POCO, WCF, Обновление «многие ко многим» - PullRequest
0 голосов
/ 14 января 2011

У меня есть отношение многие ко многим в моих классах POCO Entity Framework. В базе данных это таблица соединений с составным ключом, и свойства POCO генерируются нормально.

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

Например:

var item = context.Items.First ();

item.OtherItems.Remove (item.OtherItems [0]);

context.SaveChanges ();

Однако, когда граф отсоединенных объектов возвращается из WCF, я присоединяю его к контексту и отмечаю как измененный. Но изменения не сохранились.

Пример:

// это происходит на клиенте silverlight

item.OtherItems.Remove (item.OtherItems [0]);

// и на сервере

context.Items.Attach (пункт);

context.ObjectStateManager.ChangeObjectState (item, EntityState.Modified);

context.SaveChanges ();

В этом случае запись не удаляется из таблицы соединений в базе данных. Любые идеи, как я могу заставить это работать? Заранее большое спасибо.

1 Ответ

0 голосов
/ 14 января 2011

Изменение состояния объекта означает, что ваша сущность изменена. Вам нужно использовать ChangeRelationshipState, чтобы пометить измененное отношение между двумя объектами - это приведет к модификации БД в вашей таблице соединений. Вам нужно будет установить состояние отношения как добавленное или удаленное.

...