Insérer / mettre à jour l'ensemble du DataTable dans la table de base de données C #

c# sqlbulkcopy sql-server

Question

Je suis confronté à un problème que j'espère résoudre d'ici ici. J'ai 3 tables différentes dans un DataSet et je veux l'insérer dans la table de base de données.

Je sais que je peux le faire en utilisant SqlBulkCopy mais il y a un SqlBulkCopy : je veux vérifier si les données existent déjà dans la base de données, puis je veux qu'elles soient mises à jour au lieu d'être insérées.

Et si les données n'existent pas dans la table de base de données, je veux les insérer ensuite. Toute aide à ce sujet serait appréciée.

Je sais que je peux parcourir chaque enregistrement, puis déclencher une procédure qui vérifiera son existence si elle existe ou non. Mais la taille des données est énorme et parcourir chaque enregistrement serait un processus fastidieux, je ne veux pas utiliser cette approche.

Cordialement

Réponse d'expert

Disclaimer : Je suis le propriétaire du projet Bulk Operations

Ce projet permet de BulkInsert, BulkUpdate, BulkDelete et BulkMerge (Upsert).

Sous le capot, il fait presque ce que @marc_s a suggéré (utiliser SqlBulkCopy dans une table temporaire et effectuer une instruction de fusion à insérer ou mettre à jour en fonction de la clé primaire).

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


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi