первый вызов асинхронного ожидания с ошибкой IEnumerable <MyDataType>не содержит определения для GetAwaiter - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть веб-интерфейс, где контроллер выполняет вызов на бизнес-уровне, а затем на код структуры сущностей для получения данных.

Мне удалось исправить ошибку в классе EF, изменив код на

public async Task<IEnumerable<MyDataType>> GetDataAsync()
{
var myTask = Task.Run(()=> MyDbContext.Table1.OrderBy(p => p.Title).ToList());
return await myTask;
}

С моего контроллера я все еще получаю ту же ошибку

public async Task<ActionResult<IEnumerable<MyDataType>>> Get()
{
  var collection = await handler.GetDataAsync();
return collection;
}

В .NET Framework 4.6 я обычно добавляю асинхронное ожидание ко всем моим методам от контроллера до методов бизнес-уровня и вызов GetDataAsync.

С C # 7.0, нам не нужен асинхронный вызов в контроллере и только в методе уровня данных? В моем коде контроллер выполняет вызов бизнес-уровня, а затем вызывает метод DbContext.

Как мне исправить эту ошибку в контроллере?

Спасибо

1 Ответ

0 голосов
/ 10 сентября 2018

Я предполагаю, что вызовы асинхронного ожидания теперь разные с C # 7.0.

В своем слое данных я использовал Task.Run, и это исправляет мою ошибку компиляции в этом классе.

В верхней части я сделал то же самое с Task.Run для метода контроллера и Task.Run для вызова бизнес-метода с async и await.

Он отличается от старого кода .net Framework. Надеюсь, это поможет другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...