首页 > 解决方案 > 如何提高 Entity Framework 6 中的更新操作性能

问题描述

我们正在尝试在单个提交中更新 20000 条记录,这需要 30 多分钟。我们正在考虑减少记录数并实施将提交 1000 条记录的批处理过程。任何人都可以提供提高性能的建议吗?

标签: c#performanceentity-frameworkc#-4.0entity-framework-6

解决方案


默认情况下,EF 为单个更新执行 1 次查询。您可以编写接受表值参数的存储过程,从而使用单个查询更新多行,从而减少往返开销。对于批量插入,您也可以使用SqlBulkCopyclass.

更新:或者,您可以使用 3rd 方库来执行此操作。像https://entityframework-plus.net/?z=ef-extendedhttps://entityframework-extensions.net/我还在SqlBulkCopy 上使用简单的包装器进行批量插入。

Update2:Microsoft 的示例如何使用表值参数:https ://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/table-valued-parameters 这适用于 ADO.Net,但类似EF的方法是可能的。


推荐阅读