【发布时间】:2019-08-06 13:40:49
【问题描述】:
当直接从数据库给控制器提供 IEnumerable 时,控制器是如何工作的?哪个代码更正确和最优?让我们假设数据库非常慢并且还有其他操作正在进行。
此示例非常简单,因此执行时间可能没有足够的差异,但我正在努力学习最佳实践。
#1
public Task<Application[]> Find(Expression<Func<Application, bool>> predicate)
{
return DatabaseContext.Applications
.Where(predicate)
.ToArrayAsync();
}
...
public Task<Application[]> Find(...)
{
return ApplicationService.Find(...);
}
#2
public Task<List<Application>> Find(Expression<Func<Application, bool>> predicate)
{
return DatabaseContext.Applications
.Where(predicate)
.ToListAsync();
}
...
public async Task<IActionResult> Find(...)
{
var applications = await ApplicationService.Find(...)
return Ok(applications);
}
#3
public IEnumerable<Application> Find(Expression<Func<Application, bool>> predicate)
{
return DatabaseContext.Applications;
}
...
public IActionResult<IEnumerable<Application>> Find(...)
{
var applications = ApplicationService.Find(...);
return Ok(applications);
}
【问题讨论】:
标签: c# asp.net-core