Trong trường hợp đó, tôi sẽ sử dụng SqlBulkCopy để chèn vào giai đoạn bảng (tức là một bảng trông giống như dữ liệu tôi muốn nhập, nhưng không phải là một phần của các bảng giao dịch chính), và sau đó tại DB đến INSERT / SELECT để chuyển dữ liệu vào bảng thực đầu tiên.
Bây giờ tôi có hai sự lựa chọn tùy thuộc vào phiên bản máy chủ; Tôi có thể thực hiện INSERT thứ hai / SELECT sang bảng thực thứ hai hoặc tôi có thể sử dụng INSERT / OUTPUT để thực hiện chèn thứ hai, sử dụng các hàng nhận dạng từ bảng.
Ví dụ:
-- dummy schema
CREATE TABLE TMP (data varchar(max))
CREATE TABLE [Table1] (id int not null identity(1,1), data varchar(max))
CREATE TABLE [Table2] (id int not null identity(1,1), id1 int not null, data varchar(max))
-- imagine this is the SqlBulkCopy
INSERT TMP VALUES('abc')
INSERT TMP VALUES('def')
INSERT TMP VALUES('ghi')
-- now push into the real tables
INSERT [Table1]
OUTPUT INSERTED.id, INSERTED.data INTO [Table2](id1,data)
SELECT data FROM TMP