Как включить асинхронное поведение с использованием async / await при написании методов API в Web API - PullRequest
0 голосов
/ 25 ноября 2018

Ниже приведен код API ASP.NET для возврата данных о сотрудниках.

public async Task<IActionResult> employeegroups()
{
    try
    {
        var employeegroups = _context.EmployeeGroups.Select(p => new EmployeeGroupsEntity()
        {
            id = p.Key,
            name = p.Name
        }).ToList();

        return Ok(employeegroups);
    }
    catch
    {
        return BadRequest();
    }
}

Я получаю это предупреждение:

В этом асинхронном методе отсутствуют операторы 'await' и он будет работатьсинхронно.Попробуйте использовать оператор 'await' для ожидания неблокирующих вызовов API или 'await Task.Run (...)' для выполнения работы с процессором в фоновом потоке

Итак, я попыталсядобавить `await ':

var employeegroups = await _context.EmployeeGroups.Select(p => new EmployeeGroupsEntity()
{
    id = p.Key,
    name = p.Name
}).ToList();

Но я получаю это предупреждение:

Список« EmployeeGroupsEntity »не содержит определения для« GetAwaiter »и не имеет метода расширения« GetAwaiter »можно найти первый аргумент типа List «EmployeeGroupsEntity» (отсутствует директива using или ссылка на сборку?) "

Вот моя модель:

public class EmployeeGroupsEntity
{
    public Guid id { get; set; }
    public string name { get; set; }
}

1 Ответ

0 голосов
/ 25 ноября 2018

Когда мы работаем с Task<T> в качестве возвращаемого типа метода в сочетании с ключевым словом async, мы также должны использовать ключевое слово await, которое будет гарантировать, что вызывающий поток не заблокирован, и возобновит выполнение строк метода.последовал за await.Поэтому вы должны вызывать метод ToListAsync с await, например:

var employeegroups = await _context.EmployeeGroups.Select(p => new EmployeeGroupsEntity()
        {
            id = p.Key,
            name = p.Name
        }).ToListAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...