是否可以编写 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();
但老实说...这与您已有的并没有太大区别
我想查询我的数据库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();
但老实说...这与您已有的并没有太大区别