如何提高Entity Framework 6中的Update操作性能

时间:2018-10-15 10:21:47

标签: c# performance entity-framework c#-4.0 entity-framework-6

我们正尝试在30分钟以上的单次提交中更新20000条记录。我们正在考虑减少记录数量,并实施批处理过程,以提交1000条记录。有没有人提供改善性能的建议?

2 个答案:

答案 0 :(得分:1)

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

更新:或者,您可以使用第三方库来执行此操作。像https://entityframework-plus.net/?z=ef-extendedhttps://entityframework-extensions.net/之类的东西,我也通过SqlBulkCopy使用simple wrapper进行批量插入。

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

答案 1 :(得分:0)

您可以使用存储过程或使用Ef扩展,例如,请参阅https://entityframework-plus.net/batch-update