AutoMapper в сервисном слое - PullRequest
5 голосов
/ 26 января 2012

У меня есть проект MVC, в котором я использую AutoMapper для сопоставления своих Entity Framework Entity с представлениями моделей.Код, который определяет сопоставления, находится в классе Boostrapper, который вызывается автоматически при запуске приложения (App_Start, Global.asax)

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

Одна из проблем, с которыми я сталкиваюсь, теперь заключается в том, что мне нужно сопоставить сущности моей базы данных с некоторыми объектами домена в слое обслуживания.Я думаю, что все будет работать нормально в приложении MVC, потому что загрузчик все еще вызывается в Global.asax.

Есть ли способ заставить мой код отображения работать как для моего приложения MVC, так и для другого не MVCприложение (это может быть служба WCF, консольное приложение и т. д.) Где можно разместить этот код отображения, чтобы он вызывался обоими приложениями только один раз?

Ответы [ 2 ]

2 голосов
/ 26 января 2012

Вот статический класс, который можно использовать для инициализации служб WCF:

 public static class ServiceConfigurations
{
    private static bool mappingConfigured = false;

    public static void ConfigureMapping()
    {
        if (mappingConfigured)
        {
            return;
        }

        Mapper.CreateMap<Model1, Model2>();

        mappingConfigured = true;
    }

    public static void CleanupMapping()
    {
        Mapper.Reset();
        mappingConfigured = false;
    }
}
0 голосов
/ 26 января 2012

Почему бы просто не добавить файл global.asax в ваш сервисный проект?

Добавьте ваши сопоставления в новый проект, ссылки в обоих, и все готово.

...