1

我正在使用 SQLBulkCopy,在伪代码中我这样做:

  • 制作新的员工数据表
  • 制作新的 EmployeeAddress 数据表
  • 填充员工表,但不指定employeeId 作为它的身份
  • 填充 EmployeeAddress 数据表,但它包含一个 employeeId 字段
  • 通过这样做两次并更改表名将两个数据表写入数据库:

.

using (var bulk = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity & SqlBulkCopyOptions.KeepNulls))
    {
        bulk.BatchSize = 25;
        bulk.DestinationTableName = "Employee";
        bulk.WriteToServer(employeeDataTable);
    }       

如何在第二个数据表中指定employeeId,以便它与第一次插入的员工正确对齐?我读取数据的方式是同时读取员工和地址,因此插入所有员工然后返回并插入所有地址有点痛苦。

我想知道是否有一个优雅的解决方案?

4

1 回答 1

2

我不太确定这有多优雅,我想这由你决定。我假设您有一个独特的字段或员工数据中唯一的字段组合。

如果在服务器上创建临时表,则可以批量插入包含所有员工数据以及员工地址信息的数据。

从临时表中,插入员工数据。然后从临时表连接员工表(以获取新分配的 ID)并插入员工地址数据。

最后删除临时表。

一切仍然是面向集合的,所以你应该有很好的表现。

于 2013-08-29T14:30:29.173 回答