【发布时间】:2022-01-07 12:02:05
【问题描述】:
最佳实践要求对数据库的异步访问应该是强制性的,但是我无法在 GET 方法中做到这一点:
public class DataRepository
{
private ContextDb _contextDb;
public DataRepository(ContextDb dbInstance)
{
_contextDb = dbInstance;
}
//--------GETs----------
public async Task<IAsyncEnumerable<Answer>> GetAnswers()
{
return _contextDb.Answers.AsAsyncEnumerable();
}
上述 GetAnswers() 中的问题是我不能将“await”运算符放在“return”之前或之后,因此目前它是同步运行的。
以前的方法是这样的:
public Answer[] GetAnswers()
{
return _contextDb.Answers.ToArray();
}
将其转换为异步方法的正确方法是什么?在这种情况下是否应该实施?
【问题讨论】:
-
Best practices dictates that asynchronous access to the database should be mandatory-- 请引用。 -
你不能简单地删除
async关键字吗?如果AsAsyncEnumerable正在返回一个任务,这还不够吗?另外,为什么不能在return关键字之后添加await关键字?是什么阻止了你?
标签: c# asp.net entity-framework asynchronous asp.net-web-api