Mapear Async Model Collection para Async ViewModel Collection
Estou trabalhando com um projeto em que preciso trabalhar com a programação assíncrona em C #. Estou usando o Automapper para mapear entre Model e ViewModel. Para dados assíncronos, criei um método de mapa da seguinte maneira:
public static async Task<IEnumerable<PersonView>> ModelToViewModelCollectionAsync(this Task<IEnumerable<Person>> persons)
{
return await Mapper.Map<Task<IEnumerable<Person>>, Task<IEnumerable<PersonView>>>(persons);
}
E eu chamei esse método de mapeamento da seguinte maneira (na minha classe de serviço):
public async Task<IEnumerable<PersonView>> GetAllAsync()
{
return await _personRepository.GetAllAsync("DisplayAll").ModelToViewModelCollectionAsync();
}
Finalmente chamei minha classe de serviço dentro do controlador.
public async Task<ActionResult> Index()
{
return View(await PersonFacade.GetAllAsync());
}
Mas quando executo meu projeto, ele me mostra a seguinte exceção
Missing type map configuration or unsupported mapping.
Mapping types:
Task`1 -> Task`1
System.Threading.Tasks.Task`1[[System.Collections.Generic.IEnumerable`1[[PF.Model.Person, PF.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] -> System.Threading.Tasks.Task`1[[System.Collections.Generic.IEnumerable`1[[PF.Services.ViewModel.PersonView, PF.Services, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Destination path:
Task`1
Source value:
System.Threading.Tasks.Task`1[System.Collections.Generic.IEnumerable`1[PF.Model.Person]]
De acordo com a arquitetura do meu projeto, não é possível evitar o automapper.
Nota: Meu método de repositório para getall é o seguinte:
public virtual async Task<IEnumerable<T>> GetAllAsync(string storedProcedure)
{
return await _conn.QueryAsync<T>(storedProcedure);
}