joh*_* Gu 11 c# asynchronous async-await entity-framework-6 asp.net-mvc-5
我正在使用带有EF-6的asp.net MVC-5,我不确定使用await + ToListAsync是否有效.例如,我有以下存储库方法,它返回IQueryable: -
public IQueryable<TSet> getAllScanEmailTo()
{
return t.TSets.Where(a=>a.Name.StartsWith("ScanEmail"));
}
Run Code Online (Sandbox Code Playgroud)
我称之为: -
var emailsTo = await repository.getAllScanEmailTo().ToListAsync();
Run Code Online (Sandbox Code Playgroud)
一开始,我以为我会得到一个错误,因为我正在使用"等待"一个未被定义为任务的方法,但上面工作得很好,所以有人可以就此提出建议吗?
Yuv*_*kov 20
在开始我虽然我会得到一个错误,因为我正在使用"等待"一个没有被定义为任务的方法,但上面工作得很好
实际上,你正在等待一个返回a的方法Task<T>,其中T是a List<TSet>.如果你看一下扩展方法QueryableExtensions.ToListAsync,你会看到它返回一个Task<List<TSource>>.您异步等待此方法查询数据库,创建列表并将其返回给调用者.当你await使用这种方法时,该方法将不会返回,直到操作完成.async-await使您的代码感觉同步,而执行实际上是异步的.