Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多个表的通用批处理更新_C#_Sql_Entity Framework_Sql Update - Fatal编程技术网

C# 多个表的通用批处理更新

C# 多个表的通用批处理更新,c#,sql,entity-framework,sql-update,C#,Sql,Entity Framework,Sql Update,在我的应用程序中,我正在运行一个进程,该进程将在100多个不同的表上运行更新命令(有时超过10000个)。我正在使用entity framework,它的更新速度非常慢,大约40多分钟,通过更新实体,然后在大量更新后调用saveChanges()来更新13000条记录 Merge命令不起作用,因为每次更新表都需要一个临时表,而存储过程似乎也不可行。所以我开始研究UpdateCommand,向它传递一个数据表,我有两个问题。首先是这个 da.UpdateCommand.Parameters.Add

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

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

da.UpdateCommand.Parameters.Add("@YourField", SqlDbType.SmallDateTime).SourceColumn = "YourField"
无法通用地确定目标的dbtype。那么,如何将这些列映射到更新的参数中呢?其次,我不想插入,我只想更新,如果没有匹配的记录,就忽略它并继续。我知道我可以继续使用

 da.ContinueUpdateOnError = False

但我似乎找不到一种方法来阻止它插入一个未找到的记录。非常感谢您的帮助。谢谢大家!

如果SQL复制不是一个选项,您可以使用我们的-您可以轻松地将其配置为忽略仅存在于一侧的行,并仅同步(即更新)存在于两侧的行(如果您希望查看流程,您可以使用GUI;如果您希望计划自动执行,则可以使用命令行实用程序)

此过程是否可以仅在服务器端完成?描述它的方式听起来似乎没有必要将流程分解并发送到前端,然后再返回到后端。我只是从网络旅行和谨慎交易的角度考虑。不是特别的,不。基本上有两个数据库,一个本地数据库和一个服务器数据库。本地数据库只会每隔一段时间与更新等同步一次,有时由于互联网不可靠,可能需要一到两个月才能进行这些同步,这很好,但其负载通常很大。您在本地数据库和服务器数据库中使用的数据库管理系统是什么?您可以通过复制做一些事情……搜索一下服务代理。也许您可以在服务器端完成这一切,并使用DBMS附带的可靠服务