【发布时间】:2012-04-16 13:07:51
【问题描述】:
我尝试对 SQL Server 进行异步数据库调用并将其与新的 ASP.NET MVC 4 异步功能一起使用,但奇怪的是它根本没有返回。我调试了代码,运行良好,但不知何故 HTTP 请求永远挂起。
这是我所做的:
这是数据库调用方法:
public async Task<IEnumerable<Car>> GetCarsAsync() {
var connectionString = ConfigurationManager.ConnectionStrings["CarGalleryConnStr"].ConnectionString;
var asyncConnectionString = new SqlConnectionStringBuilder(connectionString) {
AsynchronousProcessing = true
}.ToString();
using (var conn = new SqlConnection(asyncConnectionString)) {
using (var cmd = new SqlCommand()) {
cmd.Connection = conn;
cmd.CommandText = selectStatement;
cmd.CommandType = CommandType.Text;
conn.Open();
using (var reader = await cmd.ExecuteReaderAsync()) {
return reader.Select(r => carBuilder(r)).ToList();
}
}
}
}
这里,SqlDataReader 上的 Select 方法是我实现的扩展方法。 carBuilder 私有方法只是返回一个 Car 类的实例。
这是控制器类:
public class HomeController : Controller {
private readonly GalleryContext ctx = new GalleryContext();
public async Task<ViewResult> IndexAsync() {
return View("Index", await ctx.GetCarsAsync());
}
}
知道我错过了什么吗?
【问题讨论】:
-
@gbn 那么,您认为实现是错误的还是毫无意义的?你也可以看看这个:dba.stackexchange.com/questions/15991/…
标签: asp.net sql-server asp.net-mvc asp.net-mvc-4 async-await