Сохранение объектов в EntityFramework поверх WCF приводит к созданию связанных объектов - PullRequest
0 голосов
/ 19 мая 2011

Пару раз в этом текущем проекте разработчики сталкивались с одной и той же проблемой:

Объект со связанными объектами, то есть Заказ с соответствующим клиентом, отправляется обратно через WCF для сохранения объекта.Если объект новый, мы используем AddObject (), чтобы вернуть его в контекст, и если он изменился, то мы используем ApplyCurrentValues ​​(), чтобы обновить объект.

Объект Order изменился, но объект Customerне имеет (если потоковая передача через WCF не влияет на это каким-либо образом).Однако при вызове SaveChanges () для контекста основной объект, в этом примере Order, сохраняется, но в базу данных также добавляется новая копия Customer.

Обнаруженный нами обходной путь заключается в установкессылка на Customer on Order на NULL перед вызовом SaveChanges (), однако это выглядит как клудж.

Я ищу "правильный" способ решения этой проблемы, что-то похожее наLazySaving = false, т.е. только сохранить измененный объект и не пытаться создавать все связанные объекты.

Заранее спасибо за любые указатели.

1 Ответ

0 голосов
/ 19 мая 2011

Я не уверен насчет Entity Framework, но недавно я столкнулся с этой проблемой с NHibernate.Я решил это путем реализации сохранения следующим образом

(1) Извлечь исходную сущность из БД(2) Обновление исходного объекта из объекта передачи данных WCF с помощью AutoMapper(3) Сохранить исходную сущность

Я не уверен, пытаетесь ли вы использовать свои сущности в качестве DataContracts, по моему опыту всегда лучше использовать объекты передачи данных, а не сущности в качестве DataContract.Если вы этого не сделаете, вы постоянно сталкиваетесь с различными проблемами, а DTO + AutoMapper дает вам контроль над большинством проблем, с которыми вы сталкиваетесь

http://automapper.codeplex.com/

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