0

Я использую 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

+1

pagedPersons.ListOfPersons.ToList()? –

+0

Я пробовал это и даже пытался использовать pagedPerson.ListOfPersons.ToList (), но по-прежнему та же ошибка. – Johny

+0

спасибо Росс, ваш совет помог. Не могли бы вы отправить ответ, а затем я приму это. – Johny

ответ

1

Вы должны возвращать список <> - pagedPersons.ListOfPersons.ToList()

-1

try

var viewModel_1 = AutoMapper.Mapper.Map<IEnumerable<Person>, IEnumerable<PersonDetailViewModel>>(pagedPersons.ListOfPersons.ToList());