Асинхронный вызов хранимой процедуры в Web API 2 с использованием Entity Framework - PullRequest
0 голосов
/ 07 сентября 2018

В нашей компании мы создаем веб-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?
...