如何使单行 GET 方法异步?
How to make a single line GET method asynchronous?
最佳实践规定对数据库的异步访问应该是强制性的,但是我无法在 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() 中的问题是我不能在“return”之前或之后放置“await”运算符,所以目前它是同步运行的。
之前的方法是这样的:
public Answer[] GetAnswers()
{
return _contextDb.Answers.ToArray();
}
将其转换为异步方法的正确方法是什么?在这种情况下应该实施吗?
关注 Lasse V. Karlsen
的 :
Can't you simply remove async
keyword? If AsAsyncEnumerable
is returning a task, isn't that enough? Also, why can't you add the await
keyword after the return
keyword? What is stopping you?
我删除了 async 关键字,现在可以使用了:
public IAsyncEnumerable<Answer> GetAnswers()
{
return _contextDb.Answers.AsAsyncEnumerable();
}
我检查了下面的 link,它确实像我想要的那样工作(不知道没有 async
或 await
也可以完成异步编程)。
最佳实践规定对数据库的异步访问应该是强制性的,但是我无法在 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() 中的问题是我不能在“return”之前或之后放置“await”运算符,所以目前它是同步运行的。
之前的方法是这样的:
public Answer[] GetAnswers()
{
return _contextDb.Answers.ToArray();
}
将其转换为异步方法的正确方法是什么?在这种情况下应该实施吗?
关注 Lasse V. Karlsen
的
Can't you simply remove
async
keyword? IfAsAsyncEnumerable
is returning a task, isn't that enough? Also, why can't you add theawait
keyword after thereturn
keyword? What is stopping you?
我删除了 async 关键字,现在可以使用了:
public IAsyncEnumerable<Answer> GetAnswers()
{
return _contextDb.Answers.AsAsyncEnumerable();
}
我检查了下面的 link,它确实像我想要的那样工作(不知道没有 async
或 await
也可以完成异步编程)。