我在MVC 5中使用AutoMapper 4.1.1,然後使用它將實體從EF6(純Poco與任何虛擬和沒有延遲加載)映射到viewModels。我遇到了一個奇怪的問題,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上拋出以下錯誤。
缺少類型映射配置或不支持的映射。
映射類型: 人員 - > PersonDetailViewModel MyProject.Dto.Person - > MyProject.Website.ViewModels.PersonDetailViewModel
目標路徑: IEnumerable`1 [0]
Source值: MyProject的.Dto.Person
pagedPersons.ListOfPersons.ToList()? –
我試過,甚至嘗試過使用pagedPerson.ListOfPersons.ToList(),但仍然是相同的錯誤。 –
Johny
謝謝羅斯,你的建議確實幫了忙。你能否發表一個答案,然後我會接受它。 – Johny