Шаблон проектирования для отображения DTO, содержащих дочерние коллекции, обратно в модели предметной области

Долгое время я использовал AutoMapper как для сопоставления моих моделей домена с моими DTO, так и для сопоставления моего DTO с доменом модели.

Я использую EF4 для своего ORM, и это сопоставление становится действительно уродливым, когда сопоставляемая модель содержит дочерние коллекции, которые необходимо добавить / обновить / удалить. По мере продвижения своего проекта я все чаще и чаще сталкиваюсь с этой проблемой: фотографии для сообщения в блоге, пакеты для заказа и т. Д.

При переходе от модели домена DTO-> мне приходится добавлять BeforeMap вызов, который удаляет все сущности из модели предметной области ' s, а затем добавьте настраиваемый ValueResolver для коллекции, которая берет PK каждой сущности из DTO, берет ее из БД (чтобы Entity Framework не думала, что я добавляю новую сущность) и повторно добавляет ее. к коллекции модели предметной области, а затем применить любые обновления к отдельным полям.

Это действительно уродливое решение, но как и мои попытки вручную обработать обновление этих коллекций. Есть ли у кого-нибудь предложения по более чистому подходу?

20
задан Joel Coehoorn 21 November 2011 в 03:49
поделиться