Inserisci / Aggiorna l'intera DataTable nella tabella del database C #

c# sqlbulkcopy sql-server

Domanda

Sto affrontando un problema che spero di ottenere risolto da qui. Ho 3 diverse tabelle in un DataSet e voglio inserirlo nella tabella del database.

So che posso farlo usando SqlBulkCopy ma c'è un SqlBulkCopy e voglio verificare se i dati esistono già nel database, quindi voglio che venga aggiornato invece di inserire.

E se i dati non esistono nella tabella del database, voglio inserirli allora. Qualsiasi aiuto su questo sarebbe apprezzato.

So di poterlo iterare attraverso ogni record e quindi avviare una procedura che ne verificherà l'esistenza se esiste un aggiornamento den o altro. Ma la dimensione dei dati è enorme e l'iterazione di ogni record sarebbe un processo che richiede tempo, non voglio usare questo approccio.

Saluti

Risposta esperta

Disclaimer : sono il proprietario del progetto Bulk Operations

Questo progetto consente di BulkInsert, BulkUpdate, BulkDelete e BulkMerge (Upsert).

Sotto il cofano, fa quasi quello che @marc_s ha suggerito (usa SqlBulkCopy in una tabella temporanea ed esegui un'istruzione di fusione da inserire o aggiornare a seconda della chiave primaria).

var bulk = new BulkOperation(connection);
bulk.BulkMerge(dt);


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché