Таким образом, проблема довольно проста, но я просто не вижу способа решения.Более 1 Конфигурация AutoMapper в многопроектном решении
В моем решении у меня есть слой DAL (библиотека классов), слой DTO (библиотека классов) и проект MVC.
Идея состоит в том, что приложение MVC запрашивает элементы с уровня DTO, который, в свою очередь, получает элементы из слоя DAL. Достаточно просто.
В слое DTO у меня есть репозитории с контекстом для их управления. Таким образом, приложение MVC создает экземпляр контекста DTO, а затем получает объекты DTO из соответствующего репозитория.
Теперь о проблеме.
В слое DTO я использую AutoMapper для сопоставления базовых объектов с DTO, а в приложении MVC я планировал снова использовать его для сопоставления DTO с ViewModels и обратно.
Итак, в конструкторе контекста на уровне DTO я вызываю статический RegisterMappings()
для регистрации сопоставлений между базовыми объектами и DTO. На данный момент проблем нет.
Однако в Global.asax
из приложения MVC Я также призываю RegisterMappings()
(из другого класса к одному в слое DTO) еще при попытке сопоставить с ViewModel к DTO в приложении MVC я получаю Missing type map configuration or unsupported mapping
исключение.
При рассмотрении исключений, вызванных AssertConfigurationIsValid()
Я вижу, что automapper по-прежнему ищет сопоставления между слоями DAL и DTO, а не слоями приложений DTO и MVC, как ожидалось.
Как я могу использовать automapper в двух отдельных проектах в рамках одного и того же решения, не получая этот эффект «кровоточащих» отображений?
Любые идеи очень ценятся.
Вы используете AutoMapper 5 или новее? Тогда я думаю, что вы можете хранить каждую конфигурацию отдельно, а не использовать статические вызовы «Mapper», используйте 'config.CreateMapper();' для создания сопоставления для каждого уровня. – stuartd
@stuartd измените это на ответный парень. Отлично работал для меня. –
Выполнено, спасибо ... – stuartd