Где я могу поставить этот autopping? - PullRequest
2 голосов
/ 05 апреля 2011

HI

У меня есть 2 проекта, один для моих репозиториев и уровней обслуживания (проект данных) и один для моих представлений, контроллеров (проект webUI).

Я использую автомаппер, и я делал все свои отображения в моем контроллере. Скажем, у меня была просьба получить предмет. Он перейдет к моему контроллеру, он свяжется с сервисным уровнем, и любая бизнес-логика будет выполнена в это время.

Обычно я получаю модель домена обратно, и я беру эту модель, а в контроллере я автоматически сопоставляю ее с моделью представления. Затем отправьте модель View назад.

Это работало довольно хорошо, так как я смог сохранить свой код mvc (мои viewModels и т. Д.) Вне уровня обслуживания.

Однако было 2 случая, когда мне нужно было использовать autopper для отображения на уровне сервиса.

Это отображение в слое обслуживания - это тоже другие доменные объекты, и оно в настоящее время довольно мало (всего несколько свойств).

Должен ли я делать сопоставления на моем слое обслуживания?

Если так, то куда мне втыкать эти сопоставления? Прямо сейчас у меня это есть в моем проекте с моими контроллерами, которые регистрируются при запуске приложения.

Так что одним из вариантов может быть размещение моего отображения в том месте, куда я помещал отображение (в классе в папке с моими моделями). Проблема заключается в том, что если я возьму свой сервисный слой и вставлю его в другой проект (скажем, мобильное устройство), то мне придется повторить все сопоставления, так как они не будут существовать.

Так есть идеи?

1 Ответ

2 голосов
/ 05 апреля 2011

Создайте класс на вашем сервисном уровне под названием «ServiceLayerMappings» и вызовите его с самого начала приложения.

Если вы повторно используете сервисный уровень, просто вызовите ServiceLayerMappings.MapThisStuff () или что-то еще, и все готово.

public class ServiceLayerMappings
{
     public void Map()
     {

        Mapper.CreateMap<MyServiceClass, ServiceDto>();
     }
}

Global.asax.cs

    protected void Application_Start(object sender, EventArgs e)
    {
         new ServiceLayerMappings().Map()

Конечно, вы можете сделать это статическим или переименовать. Это не важно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...