Я загрузил свою базу данных, используя автомаппер.Теперь, как мне вернуть данные обратно в viewModel снова? - PullRequest
0 голосов
/ 29 июня 2011

Итак, у меня есть 7 ViewModels, которые ссылаются на 3 модели предметной области, я использовал automapper для сопоставления моделей с ViewModels, это сработало, теперь я хочу заполнить ViewModel из данных, хранящихся в базе данных, и у меня много работыпроблем.

Вот мой Automapper.Configure ()

protected override void Configure()
{
    //Configure dynamically at save time.
    CreateMap<Step0ViewModel,Preparer>();
    CreateMap<Step1ViewModel, BusinessInformation>();
    CreateMap<Step2ViewModel, dr405>();
    CreateMap<Step3ViewModel, dr405>();
    CreateMap<Step4ViewModel, dr405>();
    CreateMap<Step5ViewModel, dr405>();
    CreateMap<Step6ViewModel, dr405>();
}

Как мне сказать приложению: «Когда я загружаюсь из DBContext, автоматически перемещаю объект в ViewModel»,Похоже, с Automapper вы можете загрузить объект из ViewModel, но не наоборот.

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

Automapper может сделать наоборот, вам просто нужно создать для него карту:

protected override void Configure()
{
    //Configure dynamically at save time.
    CreateMap<Preparer, Step0ViewModel>();
    ...
}

Что касается автоматической загрузки картографических данных во время загрузки, я не знаю об этой функции, но ее можно настроитьс помощью помощника по отображению на ваш запрос linq довольно легко:

public static class AutoMapperExtensions
{
    public static TResult MapTo<TResult>(this object self)
    {
        if (self == null)
            throw new ArgumentNullException();

        return (TResult)Mapper.Map(self, self.GetType(), typeof(TResult));
    }
}

Тогда в вашем запросе:

var viewModel = _myContext.Preparers.Find(1).MapTo<Step0ViewModel>();
2 голосов
/ 29 июня 2011

AutoMapper не определяет автоматически двунаправленные отображения. Если вы хотите отобразить из вашей модели представления соответствующую модель предметной области, вы должны также определить это отображение:

CreateMap<Step0ViewModel, Preparer>();
CreateMap<Preparer, Step0ViewModel>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...