为什么修改数据库数据的查询可以等待,而仅读取数据的查询为什么可以等待?

时间:2018-08-27 11:43:23

标签: c# asynchronous async-await entity-framework-core

我可以异步将新行写入数据库:

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 :(得分:6)

因为First并非异步。请尝试使用FirstAsync

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