2008-09-19 2 views
0

Ich erstelle eine generische Fehlerbehandlung/Protokollierung Klasse für unsere Anwendungen. Ziel ist es, die Ausnahmeinfo, Informationen über die Klasse und Funktion (sowie Parameter) und gegebenenfalls die Informationen über das Objekt System.Data.SqlClient.SqlCommand zu protokollieren.Wie würden Sie die Sql Command-Objekte für eine gegebene TableAdaptor und SqlDataAdaptor in C# (.NET 2.0)

Ich würde gerne in der Lage sein, SqlCommands, TableAdaptors und SqlDataAdaptors übergeben.

Ich bin neu im Umgang mit Reflexion und ich weiß, dass es möglich ist, dies zu tun, ich bin einfach nicht sicher, wie es geht. Bitte beraten.

Antwort

0

Ist das, worüber du redest?

SqlDataAdapter da = new SqlDataAdapter(); 
var cmd1 = ((IDbDataAdapter)da).DeleteCommand; 
var cmd2 = ((IDbDataAdapter)da).UpdateCommand; 
var cmd3 = ((IDbDataAdapter)da).SelectCommand; 
var cmd4 = ((IDbDataAdapter)da).InsertCommand; 

Die SqlDataAdapter IDbDataAdapter implementiert, die Getter/Setter für alle CRUD Befehle aufweist. Der SqlDataAdapter implementiert diese explizit, sodass sie nicht in der Signatur der Klasse angezeigt werden, wenn Sie sie nicht zuerst an die Schnittstelle übergeben. Keine Reflexion notwendig.

+0

Gibt es eine ähnliche Methode für TableAdaptors stark typisierten DataSets? – CrashTECH

+0

Ich nehme an, es ist genau dasselbe, da diese stark typisierten Datenadapter einfach reguläre Adapter sind, die VS (über ein Tool) innerhalb einer typsicheren Klasse verpackt hat. Wenn der Typ safe wrapper nicht von IDbDataAdapter ausgeht, müssen Sie die Methoden möglicherweise manuell hinzufügen, um auf den internen Adapter zuzugreifen. – Will

Verwandte Themen