C# SQLCopy和事务
我使用SqlBulkCopy将数据从C中的2个数据表复制到SQL Server。这些表由ParentId关联。我已将每个DataTable的SqlBulkCopy包装在一个事务中。我将在其中写入数据的SQL Server表的ParentId的标识也设置为Yes 我正在使用将父数据表写入服务器C# SQLCopy和事务,c#,sql-server,C#,Sql Server,我使用SqlBulkCopy将数据从C中的2个数据表复制到SQL Server。这些表由ParentId关联。我已将每个DataTable的SqlBulkCopy包装在一个事务中。我将在其中写入数据的SQL Server表的ParentId的标识也设置为Yes 我正在使用将父数据表写入服务器 bulkCopy.WriteToServer(parentDataTable); 现在,我希望能够使用SQL Server中的新ParentId更新子数据表中的ParentId。但是,父数据表仍然具有原始
bulkCopy.WriteToServer(parentDataTable);
现在,我希望能够使用SQL Server中的新ParentId更新子数据表中的ParentId。但是,父数据表仍然具有原始ParentId,而不是SQL Server ParentId
在SqlBulkCopy.WriteToServer调用之后,如何获取父数据表的ParentId?请看一看,如果使用此选项,则可以使用旧的ParentId插入到新表中确保ParentId是插入查询的一部分-如果启用了SET选项,则不会失败
如果您确实需要更改ParentId,比如说,如果表中有现有数据,那么您需要在大容量插入之前进行更改,因此仍然需要设置identity\u insert。如果您尝试在之后再这样做,您就倒霉了,因为父表和子表之间的链接已丢失。您应该能够使用SqlBulkCopy对象的[ColumnMappings][1]属性映射您喜欢的任何列。您想更改多个表的主键。请参阅下面的帖子来解释这个问题:更新级联是一个糟糕的想法。除非有非常非常好的理由,否则我不会允许它出现在任何系统中。