In quello scenario, userei SqlBulkCopy
da inserire in una messa in scena tabella (ovvero una che assomiglia ai dati che voglio importare, ma non fa parte delle principali tabelle transazionali), e poi nel DB in un INSERT
/SELECT
per spostare i dati nella prima tabella reale.
Ora ho due scelte a seconda della versione del server; Potrei fare un secondo INSERT
/SELECT
alla seconda tabella reale, oppure potrei usare INSERT
/OUTPUT
clausola per eseguire il secondo insert , utilizzando le righe di identità dalla tabella.
Ad esempio:
-- 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