Долгое время я использовал AutoMapper для сопоставления моих моделей доменов с моими DTO, а также для сопоставления моего DTO с моделями доменов.
Я использую EF4 для своего ORM, и это отображение становится действительно уродливым, когда отображаемая модель содержит дочерние коллекции, которые необходимо добавить / обновить / удалить из. По мере продвижения в моем проекте я все больше сталкиваюсь с этой проблемой: фотографии для поста в блоге, пакеты для заказа и т. Д.
При переходе от модели домена DTO-> я заканчиваю тем, что добавляю вызов BeforeMap, который удаляет все объекты из коллекции модели домена, а затем добавляю пользовательский ValueResolver для коллекции, который берет PK каждого объекта из DTO извлекает его из БД (чтобы Entity Framework не думал, что я добавляю новую сущность) и повторно добавляет его в коллекцию модели домена, а затем применяю любые обновления к отдельным полям.
Это действительно уродливое решение, но я тоже пытаюсь вручную обновить эти коллекции. У кого-нибудь есть предложения по более чистому подходу?