【发布时间】:2017-01-18 12:38:28
【问题描述】:
我有一个 ASP.NET 核心应用程序,我在其中使用我的控制器和实体框架之间的服务层。
目前我的服务是同步的,但我想让它们异步。
这是一个控制器示例:
public async Task<IActionResult> Search(BusinessesSearchModel model)
{
var resultModel = await _businessService.Search(model);
return Ok(resultModel);
}
这是我的服务示例:
public interface IBusinessesService
{
Task<BusinessResultListModel> Search(BusinessesSearchModel model);
}
public class BusinessesService : IBusinessesService
{
public async Task<BusinessResultListModel> Search(BusinessesSearchModel model)
{
var queryResult = (from b in MyDBContext.Businesses
where b.Name.Contains(model.Name)
&& b.Phone.Contains(model.Phone)
select new BusinessesListModel
{
ID = b.ID,
Name = b.Name,
Phone = b.Phone
}
).ToList();
var resultModel = new BusinessResultListModel();
resultModel.data = queryResult;
resultModel.othervalue = "other value";
return resultModel;
}
}
这不起作用。 Visual Studio 告诉我:
此异步方法缺少“等待”运算符,将同步运行
我应该在哪里添加await 以使其异步?
【问题讨论】:
-
在
var queryResult = "LINQ query here"...你试过什么? -
您的问题在这里不清楚。你的查询结果是什么?您使用的是 Linq to Sql 还是 Linq to 对象?后来不支持异步。 linq to sql(即使用实体框架/IQueryable)可以支持
-
很抱歉。我已经更新了查询部分。我正在使用 EF。
标签: c# asp.net asynchronous asp.net-core asp.net-core-mvc