c# - 如何提高 Entity Framework 6 中的更新操作性能
问题描述
我们正在尝试在单个提交中更新 20000 条记录,这需要 30 多分钟。我们正在考虑减少记录数并实施将提交 1000 条记录的批处理过程。任何人都可以提供提高性能的建议吗?
解决方案
默认情况下,EF 为单个更新执行 1 次查询。您可以编写接受表值参数的存储过程,从而使用单个查询更新多行,从而减少往返开销。对于批量插入,您也可以使用SqlBulkCopy
class.
更新:或者,您可以使用 3rd 方库来执行此操作。像https://entityframework-plus.net/?z=ef-extended和https://entityframework-extensions.net/我还在SqlBulkCopy 上使用简单的包装器进行批量插入。
Update2:Microsoft 的示例如何使用表值参数:https ://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/table-valued-parameters 这适用于 ADO.Net,但类似EF的方法是可能的。
推荐阅读
- amazon-web-services - 有人如何通过 describe_images 找到最新的 Ubuntu 映像?
- r - 当使用 coord_sf 指定 xlim、ylim 时,geom_sf 填充失败。在尝试使用 av 包创建动画时寻找解决方法
- javascript - 更新 mongoDB 中字段列表中的字段
- python - 图像迭代很慢
- c - 从文本文件中删除出现的字符
- angular - 由于打字,角度单元测试的模拟 Http 获取服务请求失败
- reactjs - 在 React 中显示来自 WYSIWYG 的 HTML 代码给了我一个警告
- shader - Fx 文件未构建“纹理对象没有方法”
- kotlin - 有没有办法在 Kotlin 中返回谷歌搜索的第一个结果的 URL?
- reactjs - 如何显示来自 useEffect 钩子的数据?