是否可以编写 Async IQueryable<TEntity> 查询?

Is it possible to write Async IQueryable<TEntity> query?

我想查询我的数据库table。我想知道我是否可以将我的查询转换为 IQueryable async。

这是我的,

var gameBankResult = await (context.GameBanks.Where(g => g.productCode == initiate.productCode)
                .Where(l => l.referenceId == null)
                ).ToListAsync();

怎么改成这样?

public virtual IQueryable<TEntity> GetManyQueryable(Func<TEntity, bool> where)
        {
            return dbSet.Where(where).AsQueryable();
        }

您应该传递 Expression 而不是 Func,否则 Entity Framework 将立即执行查询,将整个 table 放入内存并在本地进行过滤.例如:

public virtual IQueryable<TEntity> GetManyQueryable(Expression<Func<TEntity, bool>> where)
{
    return dbSet.Where(where);
}

请参阅 here 以了解对差异的详细描述。

首先,在使用 IQueryable<T> 时,优先使用表达式而不是委托,即

public virtual IQueryable<TEntity> GetManyQueryable(
    Expression<Func<TEntity, bool>> where)
{
    return dbSet.Where(where);
}

那么你应该可以使用:

var query = whatever.Where(
    g => g.productCode == initiate.productCode && g.referenceId == null).ToListAsync();

但老实说...这与您已有的并没有太大区别