c# - Entity Framework Core 3.1 Load() 异步显式加载
问题描述
我的代码中有很多 EF 显式调用,它们会在之后加载数据以避免 EF 笛卡尔积(因为它会减慢我的查询速度)
var users = await dbContext.User.ToListAsync();
foreach (var user in users )
{
await dbContext.Entry(user).Reference(b => b.VirtualProperty1).LoadAsync();
await dbContext.Entry(user).Reference(b => b.VirtualProperty2).LoadAsync();
await dbContext.Entry(user).Collection(b => b.VirtualCollection).LoadAsync();
}
问题是,我可以放弃await
吗await Task.WhenAll(AllAboveEagerLoadTasks)
?
解决方案
正如 Gert 在评论中提到的并且我已经测试过自己,上下文不是线程安全的,所以不幸的是不能并行加载实体。EF5 确实为 SplitQueries 提供了解决方案。
推荐阅读
- python - 为什么我的 break 语句没有像我预期的那样执行?
- pandas - 比较熊猫数据框的两列,如果不同,则使用正确的一列
- r - 二元运算符的R非数字参数
- azure - Azure 函数从另一个 azure 函数调用 Javascript 函数。这是预期的行为还是错误?
- swift - 等待 combineLatest 直到调用 #selector
- javascript - 单击表单提交按钮后,快速 js 路由出现错误 500
- amazon-web-services - aws 删除报告组历史记录
- terraform - 在 terraform 中,如何获取数据资源的结果?
- ios - 在 Swift 中使用正则表达式验证 RGB 字符串
- javascript - 为什么我的 Javascript 不能用于检查用户名是否已经存在?