2011-01-13 2 views
0

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

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

Например:

пункта вар = 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 (элемент, EntityState.Modified);

context.SaveChanges();

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

ответ

0

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

+0

Спасибо за ответ, который решил его. – user326502