Почему запросы, которые изменяют данные базы данных, являются ожидаемыми, а запросы, которые только читают данные, нет? - PullRequest
0 голосов
/ 27 августа 2018

Я могу асинхронно записывать новые строки в базу данных:

await dbContext.Chatlogs.AddAsync(new ChatMessage(messageString, time, author));
await dbContext.SaveChangesAsync();

А как насчет чтения содержимого из базы данных?

string firstMessageEverPosted = dbContext.Chatlogs.OrderBy(msg => msg.time).First().content;

Нет await здесь. И вставка await вызывает ошибки компиляции:

string doesntWork = await dbContext.Chatlogs.OrderBy(msg => msg.time).First().content;

Я что-то упустил или не возможно асинхронное чтение содержимого из базы данных? Если да, мне любопытно, что же такого принципиально отличного от простого чтения контента, что было бы нецелесообразно делать это асинхронно?

1 Ответ

0 голосов
/ 27 августа 2018

Потому что First просто не асинхронный. Попробуйте FirstAsync вместо:

string works = (await dbContext.Chatlogs.OrderBy(msg => msg.time).FirstAsync()).content;
...