我可以异步将新行写入数据库:
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;
我丢失了什么吗?还是无法从数据库中异步读取内容?如果是这样,我很好奇,仅阅读内容有什么根本不同,以至于允许异步执行此操作没有用吗?
答案 0 :(得分:6)
因为First
并非异步。请尝试使用FirstAsync
:
string works = (await dbContext.Chatlogs.OrderBy(msg => msg.time).FirstAsync()).content;