IAsyncEnumerable не содержит определения GetAwaiter в ADO.NET - PullRequest
1 голос
/ 06 мая 2020

Этот код в. Net Core 3.1, C# 8:

 await  dB.GetListAsync<OrigineDB>();  

приводит к следующей ошибке:

IAsyncEnumerable не содержит определения для GetAwaiter '

Ответ, представленный здесь: { ссылка } мне не очень помог, так как мой метод содержит yield и al oop, как в примере.

Какие изменения следует внести? Я не хочу возвращать список.

 async IAsyncEnumerable<T> GetListAsync<T>() where T : class, new()
        {
            cn = new SqlConnection(cs);
            cn.Open();
            cmd = new SqlCommand(nameProcStock, cn);
            cmd.CommandType = CommandType.StoredProcedure;

            if (parms != null)
                foreach (KeyValuePair<string, object> kvp in parms)
                    cmd.Parameters.AddWithValue(kvp.Key, kvp.Value);

            dr = await cmd.ExecuteReaderAsync();
            while (dr.Read())
                yield return ConvertToObject<T>();
        }

1 Ответ

5 голосов
/ 06 мая 2020

Если метод возвращает объект типа IAsyncEnumerable<T>, вы не можете его ожидать, да и не обязательно. Вы можете просто использовать его в asyn c foreach l oop и использовать его содержимое в теле l oop.

Вы можете потреблять вас IAsyncEnumerable<T> следующим образом:

await foreach (var item in db.GetListAsync<OrigineDB>()) 
{
    // do what ever you want
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...