Почему ASP.NET Core API scaffold [HttpGet] является синхронным, а другие действия асинхронными? - PullRequest
0 голосов
/ 23 ноября 2018

Я использую 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();
}
...