Я использую ASP.NET Core 2.1 и строительные леса Controller с EntityFrameworkCore.Сгенерированные действия выглядят так:
[HttpGet]
public IEnumerable<Todo> GetTodos()
{
return _context.Todos;
}
// GET: api/Todos/5
[HttpGet("{id}")]
public async Task<IActionResult> GetTodo([FromRoute] int? id)
{
...
var todo = await _context.Todos.FindAsync(id);
...
return Ok(todo);
}
Может кто-нибудь объяснить, почему в действии GetTodos () используется синхронное выполнение, и когда я должен изменить его на асинхронное действие.Допустим, я хочу вернуть только объект Dto:
// GET: api/Todos
[HttpGet]
public IEnumerable<TodoDto> GetTodos()
{
return _context.Todos.Select(x => new TodoDto() { Title = x.Title });
}
Должен ли я затем выполнить асинхронное приведение к списку?
// GET: api/Todos
[HttpGet]
public Task<List<TodoDto>> GetTodos()
{
return _context.Todos.Select(x => new TodoDto() { Title = x.Title }).ToListAsync();
}