多个表的通用批量更新

时间:2014-01-14 14:40:12

标签: c# sql entity-framework sql-update

在我的应用程序中,我正在运行一个进程,该进程将在100多个不同的表上运行更新命令(有时超过10000)。我正在使用实体框架进行更新可能非常慢 - 大约40多分钟,通过更新实体更新13000条记录,然后在大量更新后调用saveChanges()。

Merge命令不起作用,因为我需要为每个表更新临时表,并且存储过程似乎也不可行。所以我开始查看UpdateCommand,传递一个数据表,我有两个问题。首先是这个。

da.UpdateCommand.Parameters.Add("@YourField", SqlDbType.SmallDateTime).SourceColumn = "YourField"

无法一般确定目标的dbtype。那么如何将列映射到更新的参数?其次,我不想upsert,我只想更新,如果没有匹配的记录,只需忽略它并继续。我知道我可以继续使用

进行失败更新
 da.ContinueUpdateOnError = False

但我似乎无法找到一种方法来阻止它插入未找到的记录。任何帮助是极大的赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

如果SQL复制不是一个选项,您可以使用我们的SQL Data Compare Command Line tool - 您可以轻松地将其配置为忽略仅存在于一侧的行,并且仅同步(即更新)两侧存在的行(如果要查看该过程,可以使用GUI;如果要将其安排为自动执行,则可以使用命令行实用程序)。