C # Automapper, не может неявно конвертировать для типа возврата задачи - PullRequest
0 голосов
/ 16 мая 2018

Я знаю, это выглядит просто, но я потратил довольно много времени на это.

Каким-то образом я не смог успешно вернуть список ...

public Task<List<MyViewModel>> getGoodElections(long actionId)
{
    var elections = _DBsource.ElectionTable.Where(e => e.ActionId == actionId && e.Status == "OK").ToListAsync();
    List< MyViewModel > list = Mapper.Map<List<MyViewModel>>(elections);
    return list;

}

В "return list;", это дает мне ошибку:

Не удается неявно преобразовать тип System.Collections.Generic.List<MyViewModel> в System.Threading.Tasks.Task<System.Collections.Generic.List<MyViewModel>>

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы не ожидали Задачу (ToListAsync), поэтому у вас нет List<Election>. Вам следует дождаться вызова ToListAsync () и пометить метод как асинхронный, как показано ниже.

public async Task<List<MyViewModel>> getGoodElections(long actionId)
{
    var elections = await _DBsource.ElectionTable.Where(e => e.ActionId == actionId && e.Status == "OK").ToListAsync();
    List< MyViewModel > list = Mapper.Map<List<MyViewModel>>(elections);
    return list;

}
0 голосов
/ 16 мая 2018

Вы не ожидаете результата вызова вашей базы данных. Как следствие, elections, возвращаемый из вызова DB, имеет тип Task<> того типа DTO, который возвращает ваш вызов DB (т. Е. Даже если вы вернете Task, AutoMapper не сможет отобразить результат в любом случае).

Вам необходимо создать метод async, а затем дождаться результата вызова БД, прежде чем передать его в Automapper для отображения.

public async Task<List<MyViewModel>> getGoodElections(long actionId)
{
    var elections = await _DBsource.ElectionTable
       .Where(e => e.ActionId == actionId && e.Status == "OK")
       .ToListAsync();
    var list = Mapper.Map<List<MyViewModel>>(elections);
    return list;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...