Сделайте IEnumerable Entity Framework результатом асинхронного веб-API - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть метод Web API (не .core web API), использующий Entity Framework для возврата некоторых записей из базы данных. В результате получается IEnumerable Model, и я хотел бы изменить его, чтобы использовать технику Async / Await для повышения производительности, но я не знаю, как! Я пытался использовать ToListAsync , но он не работал.

Код метода моего веб-API

[HttpGet]
[Route("api/student/{id}/")]
public IEnumerable<Student> Get(int id)
{            
    try
    {
        var db = new DBEntities();
        return db.GetStudentDetails(id);
    }
    catch(Exception exception)
    {
        _logger.Error(exception.Message);
        throw new HttpResponseException(HttpStatusCode.ExpectationFailed);
    }
}

Код функции My Entity Framework:

public virtual ObjectResult<Student> GetStudentDetails(int id)
{
     var idParameter = id.HasValue ?
            new ObjectParameter("id", id) :
            new ObjectParameter("id", typeof(int));

        return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Student>("sp_get_student_details", idParameter);
 }

Заранее спасибо.

1 Ответ

0 голосов
/ 30 сентября 2019

Это должно сработать

public virtual async Task<ObjectResult<Student>> GetStudentDetails(int id)
{
      var idParameter = id.HasValue ?
      new ObjectParameter("id", id) :
      new ObjectParameter("id", typeof(int));

      return await ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Student>("sp_get_student_details", idParameter);
}
...