【问题标题】:SQLBulkCopy and TransactionsSQLBulkCopy 和事务
【发布时间】:2018-09-14 12:46:54
【问题描述】:

我正在使用SqlBulkCopy 将数据从 C# 中的 2 个DataTables 复制到 SQL Server。这些表通过ParentId 关联。我已将每个DataTableSqlBulkCopy 包装在一个事务中。我将向其中写入数据的 SQL Server 表也有 ParentId,其 Identity 设置为 Yes。

我正在使用

将父 DataTable 写入服务器
bulkCopy.WriteToServer(parentDataTable);

现在我希望能够使用 SQL Server 中的新 ParentId 更新子数据表中的 ParentId。但是父数据表仍然有原始的ParentId,而不是SQL Server ParentId

SqlBulkCopy.WriteToServer调用后如何获取父数据表的ParentId

【问题讨论】:

标签: c# sql-server


【解决方案1】:

看看SET IDENTITY_INSERT ON,如果你使用它,那么你可以使用旧的 ParentId 插入新表(确保 ParentId 是插入查询的一部分 - 如果 SET 不会失败选项已启用)。

如果您确实需要更改 ParentId(例如,如果表中有现有数据),那么您需要在批量插入之前进行 ,因此您仍然需要设置 identity_insert。如果您在之后尝试这样做,那么您将不走运,因为父表和子表之间的链接已消失

【讨论】:

    【解决方案2】:

    您应该能够使用SqlBulkCopy 对象的[ColumnMappings][1] 属性映射您喜欢的任何列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-22
      • 2011-08-20
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多