Использование AutoMapper для отображения между 2 списками объектов - PullRequest
0 голосов
/ 25 ноября 2011

Я использую AutoMapper для сопоставления моей модели предметной области и модели представления и наоборот.

Я обычно делаю свои отображения следующим образом в моем контроллере:

// Mapping
Tutorial tutorial = (Tutorial)tutorialMapper.Map(viewModel, typeof(TutorialEditViewModel), typeof(Tutorial));

Мой учебный класс по отображению для обработки вышеупомянутого:

public class TutorialMapper : ITutorialMapper
{
     static TutorialMapper()
     {
          Mapper.CreateMap<TutorialCreateViewModel, Tutorial>();
          Mapper.CreateMap<TutorialEditViewModel, Tutorial>();
          Mapper.CreateMap<Tutorial, TutorialEditViewModel>();
     }

     public object Map(object source, Type sourceType, Type destinationType)
     {
          return Mapper.Map(source, sourceType, destinationType);
     }
}

Я пытаюсь сократить свой способ отображения между списками. В настоящее время я делаю это так:

IEnumerable<Tutorial> tutorialsList = tutorialService.GetAll();
IEnumerable<TutorialListViewModel> tutorialListViewModels =
     from t in tutorialsList
     orderby t.Name
     select new TutorialListViewModel
     {
          Id = t.Id,
          Name = t.Name,
          IsActive = t.IsActive
     };

Можно ли отобразить это как-то так?

Я знаю, что AutoMapper поддерживает отображение списков, но как бы я внедрил его в свой сценарий?

Я также попробовал следующее:

IEnumerable<Tutorial> tutorialsList = tutorialService.GetAll();
IEnumerable<TutorialListViewModel> tutorialListViewModels = (IEnumerable<TutorialListViewModel>)tutorialMapper.Map(tutorialsList, typeof(IEnumerable<Tutorial>), typeof(IEnumerable<TutorialListViewModel>));

Но если в tutorialsList нет элементов, я получаю следующую ошибку:

{"The entity type Tutorial is not part of the model for the current context."}

Ответы [ 2 ]

1 голос
/ 24 апреля 2012

Может быть, вы могли бы попробовать что-то вроде этого:

public ViewResult Index()
    {
        IList<City> cities = db.Cities.ToList();

        IList<CityViewModel> viewModelList = Mapper.Map<IList<City>, IList<CityViewModel>>(cities);
        return View(viewModelList);
    }
0 голосов
/ 25 ноября 2011

Я никогда не определял свою сущность Tutorial, заданную в моем файле контекста. Это работает сейчас.

...