我有一个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方法。
如何在控制器中修复此错误?
谢谢
答案 0 :(得分:0)
我猜想,C#7.0的异步等待调用现在有所不同。
在我的数据层中,我使用了Task.Run,它修复了该类的编译错误。
在顶部,我对Controller.Task上的Task.Run和Task.Run进行了相同的操作,并使用async和await调用了业务方法。
它与旧的.net框架代码不同。希望对别人有帮助。