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
。