在我们公司中,我们使用存储过程通过同步数据库交互来创建Web API。我最近阅读了Microsoft文档,该文档说异步API应该是默认的(我不再赘述)。我还知道,如果异步实现不正确,您将获得同步方法+额外的开销。
我的问题:
原始代码:
public class EventsController : ApiController
{
EventCapturingToolDBEntities _db = new DBEntities();
IhttpActionResult GetProjectsByUserId(int userId)
{
results = _db.getProjectsByUserId(userId).AsQueryable.ToList(); //Stored procedure generated by EF after database first approach
var processResults = //resultsprocessing
return Ok(processResults)
}
}
自适应代码:
public class EventsController : ApiController
{
private EventCapturingToolDBEntities _db = new DBEntities();
public async Task<IhttpActionResult> GetProjectsByUserId(int userId)
{
var results = await _db.Database
.SqlQuery<getProjectsByUserId_Result>("getProjectsByUserId @p0", userId).ToListAsync(); //Class generated by EF as part of the stored procedure
var processResults = //resultsprocessing
return Ok(processResults)
}
} //Is this async?