Utilisation de SQLBulkCopy pour insérer / mettre à jour une base de données

asp.net sqlbulkcopy

Question

J'ai un datatable avec les enregistrements.J'insère des enregistrements dans la table Sql en utilisant SqlBulkCopy.Il fonctionne très bien.La prochaine fois, obtenez le datatable avec les mêmes enregistrements avec peu de valeurs modifiées. puis-je mettre à jour la table SQL avec SqlBulkCopy? S'il vous plaît aider.

Merci, Vix

Réponse d'expert

Comme mentionné par AdaTheDev, SqlBulkCopy peut uniquement insérer, mais il existe une bibliothèque alternative qui permet d'effectuer des opérations Upsert.

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

La bibliothèque Bulk Operations a une méthode " BulkMerge " qui insère ou met à jour des lignes en fonction de la clé spécifiée.

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);

Réponse populaire

SqlBulkCopy est uniquement utilisé pour insérer des enregistrements et non pour les mettre à jour comme expliqué ici . Vous devrez utiliser une technique différente pour effectuer des mises à jour en masse.

Par exemple, vous pouvez insérer SqlBulkCopy dans une table intermédiaire, puis exécuter du code SQL pour effectuer la mise à jour à partir de là dans la table principale.



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