Это не обязательно отвечает на ваш вопрос, но для разработчика важно понять контексты, для которых они создаются, и один из методов - реализовать «UnitOfWork».Для каждой единицы работы существует отдельный контекст, и для этой единицы работы можно выполнить конкретную задачу (например, сохранить данные формы).Используя шаблон «UnitOfWork», он затем получает идентификаторы для зависимых объектов (или сам объект для идентификатора), извлекает объекты, создает новые объекты, связывает зависимые и новые объекты, а затем сохраняет изменения.Затем для блока кода, вызывающего единицу работы, уведомить другие области кода, для которых были внесены изменения, посредством обмена сообщениями.Но так как вы не имеете состояния, соглашение об обмене сообщениями не будет применяться напрямую.
Во-вторых, я почти не использую AutoMapper или что-то подобное и вместо этого использую POCO с Code First.Используя это соглашение, я теперь использую мои объекты POCO как бизнес-объекты, которые заполняются слоем данных (EF), где мои конфигурации теперь происходят в методе DbContext (UnitOfWork) OnModelCreating.Удаление всего процесса отображения уменьшает значительное количество кода и сложность.Поэтому я рекомендую взглянуть на ваш дизайн и убедиться, что есть четкие шаблоны, для которых вы управляете / разделяете доступ к данным.
При всем вышеперечисленном мапперы отлично подходят для веб-сервисов.Цель состоит в том, чтобы минимизировать объем данных, отправляемых и получаемых посредством обработки запросов и ответов.Например, если все, что хочет вызывающий абонент, это имя и фамилия, поэтому не имеет смысла отправлять весь профиль.