C# 为什么修改数据库数据的查询可以等待,而只读取数据的查询却不能?

C# 为什么修改数据库数据的查询可以等待,而只读取数据的查询却不能?,c#,asynchronous,async-await,entity-framework-core,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 dbContext.Chatlogs.AddAsync(new ChatMessage(messageString, time, author));
await dbContext.SaveChangesAsync();
但是仅仅从数据库中读取内容又如何呢

string firstMessageEverPosted = dbContext.Chatlogs.OrderBy(msg => msg.time).First().content;
在此等待
。插入
wait
会导致编译错误:

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

我是否遗漏了什么,或者无法从数据库异步读取内容?如果是这样的话,我很好奇,仅仅阅读内容有什么根本性的不同,以至于不允许异步执行此操作?

因为
首先
就是不异步。请改为尝试
FirstAsync

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

因为
First
不是异步的。请改为尝试
FirstAsync

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

谢谢你教我这种方法的存在。我没有意识到这一点,因为它与
First
位于不同的名称空间中,所以在我键入查询时,IntelliSense没有向我显示
FirstAsync
。感谢您教我这个方法的存在。我没有意识到这一点,因为它位于与
First
不同的命名空间中,所以在我键入查询时,IntelliSense没有向我显示
FirstAsync