【发布时间】:2020-04-24 16:45:48
【问题描述】:
我正在使用EfRepository<TEntity> 访问数据,我有一个DbSet<TEntity>。
我正在尝试异步访问数据,我需要它是Queryable,我目前正在使用这个:
public virtual async Task<IQueryable<TEntity>> AllAsync()
{
var list = await this.DbSet.ToListAsync();
return list.AsQueryable();
}
它实际上比同步使用DbSet 更快吗?
【问题讨论】:
-
请记住,任何时候使用 ToList 都意味着将执行枚举,将调用数据库并将结果存储在内存中,而 IQueryable 的整个想法是避免这种情况,并且只查询数据库并按需执行枚举...
-
@DeanKuga
IEnumerable<T>和IQueryable<T>都支持延迟加载,但不同之处在于编译器会为IQueryable<T>生成表达式树。我同意 OP 不应该 ToList。
标签: c# asynchronous entity-framework-core asqueryable