2013-04-29 3 views
7

Ich habe Glimpse und die Glimpse.ADO-Erweiterung heruntergeladen und auf meiner Testinstanz installiert.Can Glimpse bietet Diagnosefunktionen bei Verwendung der SqlClient-Namespace-Klassen

Ich dachte, ich würde eine Erfassung aller SQL, die ausgeführt wurde, erhalten, aber es scheint, als ob es keine Befehle mit der Art erfasst, wie unser Code geschrieben wird.

 using (var conn = new SqlConnection(cString)) 
     { 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand(); 
      cmd.Connection = conn; 
      cmd.CommandText = "Select count(*) from table"; 
      cmd.CommandType = CommandType.Text; 

      txtResult2.Text = cmd.ExecuteScalar().ToString(); 
      conn.Close(); 
     } 

ICH KANN bekommen es wie so schriftliche Informationen aus einer Testseite mit dem SQL-Code zur Verfügung zu stellen:

 var factory =DbProviderFactories.GetFactory(cString.ProviderName); 
     using (var connection = factory.CreateConnection()) 
     { 
      connection.ConnectionString = connectionString.ConnectionString; 
      connection.Open(); 

      using (var command = connection.CreateCommand()) 
      { 
       command.CommandText = "SELECT COUNT(*) FROM table"; 
       command.CommandType = CommandType.Text; 
       txtResult1.Text = command.ExecuteScalar().ToString(); 
      } 
     } 

Jedoch habe ich in meinem Code zu vielen Stellen ändern müssen, wenn ich nur Daten erfassen Verwenden dieser dbProviderFactories-Methode.

Gibt es eine Möglichkeit, Glimpse.ADO mit der System.Data.SqlClient.SqlConnection-Klasse zu arbeiten? Gibt es eine weitere Glimpse-Erweiterung, die mit diesem Namensraum funktioniert?

Gibt es eine andere Möglichkeit, dieses Problem anzugehen?

+1

Nur eine Beobachtung: Wenn zu viele Stellen in Ihrem Code eine Verbindung auf eine bestimmte Art und Weise erzeugen, kann dies ein Zeichen dafür sein, dass Ihr Code zu repetitiv ist. – StriplingWarrior

+1

Vielleicht, aber als jemand schlauer als ich sagte, "Wo auch immer Sie sind, das ist, wo Sie anfangen müssen" – Aheho

Antwort

6

Ich stimme mit @StriplingWarrior überein, die Verwendung der Providerfabriken wird Ihren Code DRYIGER machen und den Best Practices folgen. DbProviderFactories ist wirklich der beste Weg, dies zu tun und Ihr Code wird nicht explizit auf Glimpse verlassen.

Wenn Sie jedoch wirklich mögen nur darauf, mit Ihrem bestehenden App-Code bewegen, Glimpse Sie mit den folgenden Änderungen unterstützen:

using (var conn = new GlimpseDbConnection(new SqlConnection(cString)) 
{ 
    conn.Open(); 
    DbCommand cmd = conn.CreateCommand(); 
    cmd.CommandText = "Select count(*) from table"; 
    cmd.CommandType = CommandType.Text; 

    txtResult2.Text = cmd.ExecuteScalar().ToString(); 
    conn.Close(); 
} 

In dem obigen Beispiel wird der Befehl mit den CreateCommand() erstellt Methode, die die Verknüpfung des Befehls und der Verbindung überflüssig macht.

Alternativ könnten Sie auch noch explizit den Befehl erstellen, wie so:

conn.Open(); 
DbCommand cmd = new GlimpseDbCommand(new SqlCommand()); 
cmd.Connection = conn; 
cmd.CommandText = "Select count(*) from table"; 
cmd.CommandType = CommandType.Text; 

Schließlich mehr Dokumentation über die Registerkarte SQL ist, indem Sie auf das ? Symbol in der Glimpse UI zur Verfügung, wenn Sie auf die Registerkarte ausgewählt haben, oder indem Sie unsere SQL documentation auf getGlimpse.com gehen. (Ich werde diese Informationen für zukünftige Referenz auf dieser Seite hinzufügen.)

+0

Welcher Namespace ist GlimpseDbConnection in deklariert? – Aheho

+0

'Glimpse.Ado.AlternateType' ist im Paket' Glimpse.Ado' enthalten. – anthonyv

Verwandte Themen