Я использую AutoMapper 4.1.1 в MVC 5, а затем используя его для сопоставления сущностей из EF6 (чистый Poco с любой виртуальной и без ленивой загрузки) для просмотра моделей. У меня странная проблема, когда AutoMapper правильно ее переводит, но в другом случае не работает.Ошибка AutoMapper странная
Dto.Person
{
public int PersonId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
}
ViewModel.PersonDetailViewModel
{
public int PersonId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
}
public class PagedPersons
{
public int TotalNumberOfRecords { get; set; }
public IEnumerable<Person> ListOfPersons { get; set; }
}
Функция для извлечения Лица
public IEnumerable<Person> GetAllPersons_NOPaging()
{
IEnumerable<Person> persons = new List<Person>();
persons = GetFromdatabase();
return persons;
}
public PagedPersons GetAllPersons_WithPaging()
{
int totalNumberOfRecords = 0;
IEnumerable<Person> = GetFromDatabase();
return new PagedPersons { TotalNumberOfRecords = totalNumberOfRecords, ListOfPersons = listofPersons };
}
Контроллеры
var pagedPerson = GetAllPersons_WithPaging();
var persons = GetAllPersons_NOPaging();
AutoMapper.Mapper.CreateMap<Person, PersonDetailViewModel>();
// THROWS AN ERROR
var viewModel_1 = AutoMapper.Mapper.Map<IEnumerable<Person>, IEnumerable<PersonDetailViewModel>>(pagedPersons.ListOfPersons);
// does NOT throw error
var viewModel_2 = AutoMapper.Mapper.Map<IEnumerable<Person>, IEnumerable<PersonDetailViewModel>>(persons);
Таким образом, я не понимаю, что я делаю неправильно, как AutoMapper способен правильно отобразить в случае viewmodel_2 но бросая следующую ошибку на viewModel_1.
Отсутствует тип конфигурации карты или неподдерживаемое отображение.
типы карт: Person -> PersonDetailViewModel MyProject.Dto.Person -> MyProject.Website.ViewModels.PersonDetailViewModel
назначения Путь: IEnumerable`1 [0]
Источник значение: MyProject .Dto.Person
pagedPersons.ListOfPersons.ToList()? –
Я пробовал это и даже пытался использовать pagedPerson.ListOfPersons.ToList(), но по-прежнему та же ошибка. –
Johny
спасибо Росс, ваш совет помог. Не могли бы вы отправить ответ, а затем я приму это. – Johny