如何使单行 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,它确实像我想要的那样工作(不知道没有 asyncawait 也可以完成异步编程)。

Microsoft IAsyncEnumerable Info