Comment obtiendriez-vous les objets de commande SQL pour un TableAdapter donné et un SqlDataAdapter en C # (.NET 2.0)
-
01-07-2019 - |
Question
Je crée une classe générique de traitement / de consignation des erreurs pour nos applications. L'objectif est de consigner les informations sur l'exception, les informations sur la classe et la fonction (ainsi que les paramètres) et, le cas échéant, les informations sur l'objet System.Data.SqlClient.SqlCommand
.
Je voudrais pouvoir gérer le passage de SqlCommands
, TableAdaptors
et SqlDataAdaptors
.
Je commence à utiliser la réflexion et je sais qu’il est possible de le faire. Je ne sais pas comment procéder. S'il vous plaît aviser.
La solution
Est-ce ce dont vous parlez?
SqlDataAdapter da = new SqlDataAdapter();
var cmd1 = ((IDbDataAdapter)da).DeleteCommand;
var cmd2 = ((IDbDataAdapter)da).UpdateCommand;
var cmd3 = ((IDbDataAdapter)da).SelectCommand;
var cmd4 = ((IDbDataAdapter)da).InsertCommand;
Le SqlDataAdapter implémente IDbDataAdapter, qui possède des getters / setters pour toutes les commandes CRUD. Le SqlDataAdapter les implémente explicitement, afin qu'ils n'apparaissent pas dans la signature de la classe à moins que vous ne le convertissiez d'abord dans l'interface. Aucune réflexion nécessaire.