c# - 第一次调用异步等待仍然有错误 IEnumerable不包含 GetAwaiter 的定义
问题描述
我有一个 webapi,控制器在其中调用业务层,然后调用实体框架代码以获取数据。
我能够通过将代码更改为来修复 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,我通常将异步等待添加到从 Controller 到业务层方法和 GetDataAsync 调用的所有方法中。
使用 C# 7.0,是不是我们不需要控制器中的异步调用而只需要数据层方法中的异步调用?在我的代码中,控制器调用业务层,然后调用 DbContext 方法。
如何修复控制器中的此错误?
谢谢
解决方案
我猜,现在异步等待调用与 C# 7.0 不同。
在我的数据层中,我使用了 Task.Run 并修复了该类上的编译错误。
在顶部,我对控制器方法上的 Task.Run 做了同样的事情,Task.Run 使用 async 和 await 调用业务方法。
它不同于旧的 .net 框架代码。希望它可以帮助别人。
推荐阅读
- ios - locationManager:didChangeAuthorization 与 locationManagerDidChangeAuthorization
- vba - MS Access 将可见的选定单元格移动到活动表活动行的第一个单元格
- .net - 我的 Obj-C GUI 应用程序如何打开我的 .Net Xamarin.IOS GUI 应用程序?
- java - EJB 计时器调度程序的 SQL 连续数据库阻塞
- python - 合并包含相似字符串的 CSV 文件中的行
- apache-spark-sql - 如何更快地为大型 json 表创建 spark sql 表
- powerapps - 使用 Sharepoint 列表管理 Power Apps 和 PowerAutomate 的测试环境
- json - 我们如何将大尺寸的有效载荷压缩到 kinesis Streams 中?
- excel - 宏使我错误下标超出范围
- c++ - 为什么在结果中使用 =+2 而不是 =+1 差异?