Utilizzando SQLBulkCopy per inserire / aggiornare il database

asp.net sqlbulkcopy

Domanda

Ho un datatable con i record. Sto inserendo i record nella tabella Sql utilizzando SqlBulkCopy.It funziona bene.Oltre tempo quando ottenere il datatable con gli stessi record con pochi valori modificati SqlBulkCopy sta inserendo un altro set di record senza aggiornare i dettagli precedenti.Come posso aggiornare la tabella Sql usando SqlBulkCopy ?? Per favore aiuto.

Grazie, Vix

Risposta esperta

Come accennato da AdaTheDev, SqlBulkCopy può solo inserire tuttavia esiste una libreria alternativa che consente di eseguire operazioni Upsert.

Disclaimer : sono il proprietario del progetto Bulk Operations

La libreria Bulk Operations ha un metodo " BulkMerge " che inserisce o aggiorna le righe in base alla chiave specificata.

var bulk = new BulkOperation(connection);

bulk.ColumnMappings.Add("ID", true);
bulk.ColumnMappings.Add("Column1");
bulk.ColumnMappings.Add("Column2");
bulk.ColumnMappings.Add("Column3");

bulk.BulkMerge(dt);

Risposta popolare

SqlBulkCopy viene utilizzato solo per inserire record, non aggiornarli come spiegato qui . Dovresti utilizzare una tecnica diversa per eseguire aggiornamenti collettivi.

Ad esempio, è possibile eseguire SqlBulkCopy in una tabella di gestione temporanea, quindi eseguire alcuni SQL per aggiornare da lì alla tabella principale.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow