c# - 从表达式返回所有实体> 实体框架核心
问题描述
正如标题所说,我想返回与Expression<Func<T, bool>>
EF Core 匹配的所有实体。我已经创建了 FirstOrDefaultAsync,但我找不到任何方法来返回与谓词匹配的所有实体。
public async Task<TEntity> ReadAsync(Expression<Func<TEntity, bool>> predicate)
{
return await _dbContext.Set<TEntity>().FirstOrDefaultAsync(predicate);
}
我已经看到Where
使用该方法的示例,但这并未列为替代方法。如何返回与 EF Core 中的谓词匹配的所有实体?
解决方案
您可以使用Where
. 您应该知道,没有异步版本Where
,因为执行被延迟(即Where
不会导致查询在数据库上执行,因此没有可以异步运行的操作)。如果你想让你的方法保持异步,你必须等待一个ToListAsync
操作:
public async Task<List<TEntity>> ReadAsync(Expression<Func<TEntity, bool>> predicate)
{
return await _dbContext.Set<TEntity>().Where(predicate).ToListAsync();
}
请注意,在您立即从异步操作返回的情况下,您不需要等待并且可以节省async
方法的开销:
public Task<List<TEntity>> ReadAsync(Expression<Func<TEntity, bool>> predicate)
{
return _dbContext.Set<TEntity>().Where(predicate).ToListAsync();
}
推荐阅读
- javascript - Webpack 优化 splitChunks - 生成的 webpack 文件
- puppet - 如何使用 rspec 在 puppet 中模拟 puppet validate_cmd?
- javascript - 为什么即使我包含了参考资料,jquery marquee 也不起作用?
- django - 将 Django 部署到 Google Cloud 时,HTML 图标未正确加载
- .htaccess - 全部重定向到索引,无法获取 robots.txt
- javascript - 如何使用 axios 和代理服务器进行 https 调用?
- parallel-processing - 几个带有WAIT的aRFC,如何在回调中同步访问变量?
- javascript - jquery javascript导航(重定向)问题
- mysql - 查找 id 可以在几列之一中的行
- android - 无法创建 AR Session Android Sceneform