c# - 最高效的 C# Entity Framework 数据库更新策略
问题描述
保存问题无法正常工作并寻找最有效的方法。
如果我在循环中执行此操作,它可以工作,但速度非常慢:
var entity = dbContext.customer.find(fubar.id);
dbContext.Entry(entity).CurrentValues.SetValues(fubar);
这是代码
var myCollection = dbContext.customer.where(...);
foreach (var fubar in myCollection.where(x => x.addressId == null))
{
var existingRecord = dbContaxt.address.where(...);
fubar.addressId = existingRecord.id;
dbContext.table.Add(fubar);
}
dbContext.SaveChanges();
第一个问题,我的更改没有被保存,我不知道为什么。
第二个问题,有没有更有效的方法来做到这一点?集合中可以有数千条记录。
像 Parallel.ForEach() 这样的东西在这里合适吗?
谢谢,萨默
解决方案
每当您阅读实体时,将它们读取为 Queryable()
例如:var myCollection = dbContext.customer。AsQueryable() .where (...);
这样您就可以在不获取所有记录的情况下查询该表。但是,如果您不使用它,这将获取所有记录,然后对其应用 where 条件。
只需将其应用于具有更多记录数的查询即可查看差异。
推荐阅读
- sharepoint - 只需编辑 Sharepoint webpart manifest.json
- debugging - python-lldb脚本完成后继续
- laravel - 如何使商业 coinbase webhook 连接到 laravel 应用程序
- python - 如何将基因组 SNP 转换为二进制格式?
- r - 如何根据另一列中因子变量的变化创建一列?
- json - 与 MongoDB 连接时出现 Logstash 警告(hanshaking 错误)
- postman - 如何在 Postman 中使用外部文本文件提供预期的 JSON(响应)
- python - 获取路径的最终位置
- node.js - Node.js 安装卡住
- flutter - 是否有更短的符号来使小部件有条件地扩展?