EF Core DbContext 其中异步

Jos*_*mil 3 c# entity-framework-core

我正在尝试执行包含 WHERE 作为异步函数的查询。就像使用该FirstAsync操作一样,但没有,WhereAsync所以我想知道是否有一些解决方法。

我有一个ApplicationRepository具有功能的对象GetEntitiesAsync,我尝试了以下方法:

public async Task<IEnumerable<TEntity>> GetEntitiesAsync<TEntity>(Func<TEntity, bool> selector) where TEntity : class => 
            await _context.Set<TEntity>().Where(selector).AsQueryable().ToArrayAsync();
Run Code Online (Sandbox Code Playgroud)

然而,这行代码会抛出异常:

System.InvalidOperationException: The source IQueryable doesn't implement IAsyncEnumerable<OneStopApp.Models.CustomForm>. Only sources that implement IAsyncEnumerable can be used for Entity Framework asynchronous operations.
Run Code Online (Sandbox Code Playgroud)

Mar*_*cik 7

有一个ToListAsync方法可以异步调用来获取数据。

var list = await db.Accounts.Where(x => true).ToListAsync();
Run Code Online (Sandbox Code Playgroud)

获取数据需要花费大量时间,因此异步不在Where方法上,而是在获取数据的方法上,例如ToArrayAsyncFirstAsync