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