glo*_*ter 3 c# ado.net lambda asynchronous entity-framework
我刚刚意识到这段代码:
public async Task<List<Review>> GetTitleReviews(int titleID)
{
using (var context = new exampleEntities())
{
return await context.Reviews.Where(x => x.Title_Id == titleID).ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
...将无法工作,因为异步方法无法等待LINQ表达式.我做了一些搜索,但只找到了一些过于复杂的解决方案.
如何将返回LINQ表达式的函数转换为异步版本?
添加System.Data.Entity命名空间并利用Async扩展方法
在这种情况下ToListAsync应该做的伎俩
using System.Data.Entity;
public async Task<List<Review>> GetTitleReviews(int titleID)
{
using (var context = new exampleEntities())
{
return await context.Reviews.Where(x => x.Title_Id == titleID).ToListAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
从技术上讲,该方法不会返回lambda。返回List<Review>。
确实,您发布的内容无法编译。但这将:
public async Task<List<Review>> GetTitleReviews(int titleID)
{
using (var context = new exampleEntities())
{
return await Task.Run(() => context.Reviews.Where(x => x.Title_Id == titleID).ToList());
}
}
Run Code Online (Sandbox Code Playgroud)
如果那不能回答您的问题,也许您可以更清楚地知道您要完成的目标以及上述原因为什么没有做到。