2010-05-21 7 views
0

J'ai un objet aC# DataSet avec une table dedans, y mets des données et j'ai apporté quelques modifications à cet ensemble de données (par code) .Comment faire pour que les instructions t-sql soient utilisées pour mettre à jour un DataSet

Y at-il un moyen d'obtenir les requêtes T-SQL réel cet ensemble de données se produiront sur le serveur SQL lorsque je mets à jour l'ensemble de données à la base de données avec le code qui ressemble à ceci:

var dataAdapter = new SqlDataAdapter(cmdText, connection); 
var affected = dataAdapter.Update(updatedDataSet); 

Je veux Sachez quelles questions cet ensemble de données va transmettre à la base de données afin que je puisse enregistrer ces modifications dans un fichier journal dans mon programme C#.

Répondre

0

demander les objets SqlCommand du SqlDataAdapter

+0

Désolé, mais où puis-je trouver (quelle propriété) ces objets SqlCommand? – Dennis

+0

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.updatecommand(v=VS. 100) .aspx –

1

Vous pouvez vous abonner aux RowUpdating et RowUpdated événements de la SqlDataAdapter. Ils vous diront le SqlCommand qui est sur le point d'être exécuté ou qui vient d'être exécuté.

Vous pouvez affecter les lignes de mise à jour actuelles et futures en définissant la propriété Status du SqlRowUpdatingEventArgs fourni avec l'événement. Il est de type UpdateStatus, vous pouvez donc lui indiquer d'ignorer les lignes actuelles ou futures.

+0

Ok, question suivante, mais comment puis-je empêcher que les requêtes soient réellement exécutées sur la base de données quand je vais faire un .update sur le dataadapter? – Dennis

0

Vous pouvez construire une enveloppe autour du fournisseur System.Data.SqlClient (Ex. Le fournisseur enregistré dans le fichier de configuration que ...providerName="System.Data.SqlClient «). Essentiellement un proxy d'interception vous aurait accès à toutes les informations transitant par le fournisseur et Il pourrait siphonner ce dont vous avez besoin, l'intercepter, le modifier, l'agréger et/ou l'enrichir.Ceci est un peu plus avancé mais ouvre la porte à la capture de toute une gamme d'informations et pourrait être inséré/remplacé/enlevé

Questions connexes