MVC中的控制器可以对数据库进行异步调用吗?

时间:2015-07-28 07:18:59

标签: asp.net-mvc

我正在为我的项目添加业务数据层,目前我正在将它连接到MVC应用程序。我将拥有能够回答视图和控制器的控制器,这些控制器将用于WebApi,以便我可以进行异步AngularJS调用。

我是否需要对我的数据执行异步和同步调用,还是可以使用经典MVC控制器的异步函数? (我不确定视图和控制器之间的通信是如何实现的,所以我担心如果我可能会引起一些问题,因为默认情况下它会对数据库进行同步调用)

1 个答案:

答案 0 :(得分:3)

  

或者我可以使用经典MVC控制器的异步函数吗?

你当然可以。至少在最近的MVC版本中(我不记得何时添加了支持)。

您不需要做任何特别的事情,只需标记您的行为async并返回Task<ActionResult>

您可以在操作中自由混合阻塞和异步方法。

例如

public async Task<ActionResult> Details(id) {

  var res = await db.Entities.FindAsync(id);
  if (res == null) {
    return HttpNotFound();
  }

  return View(res);
}