使 IEnumerable Entity Framework 结果异步 Web API
Make IEnumerable Entity Framework result async Web API
我有一个 Web API(不是 .core web API)方法使用 Entity Framework 到 return 数据库中的一些记录。结果是 IEnumerable 模型,我想修改它以使用 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);
}
}
我的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);
}
提前致谢。
这应该可以解决问题
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);
}
我有一个 Web API(不是 .core web API)方法使用 Entity Framework 到 return 数据库中的一些记录。结果是 IEnumerable 模型,我想修改它以使用 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);
}
}
我的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);
}
提前致谢。
这应该可以解决问题
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);
}