第一次调用异步以等待仍存在错误IEnumerable <mydatatype>不包含GetAwaiter的定义

时间:2018-09-10 15:40:37

标签: c# async-await

我有一个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方法。

如何在控制器中修复此错误?

谢谢

1 个答案:

答案 0 :(得分:0)

我猜想,C#7.0的异步等待调用现在有所不同。

在我的数据层中,我使用了Task.Run,​​它修复了该类的编译错误。

在顶部,我对Controller.Task上的Task.Run和Task.Run进行了相同的操作,并使用async和await调用了业务方法。

它与旧的.net框架代码不同。希望对别人有帮助。