2013-04-29 3 views
7

Pobrałem Glimpse i rozszerzenie Glimpse.ADO i zainstalowałem je na moim instancji testowej.Czy Glimpse zapewnia diagnostykę podczas korzystania z klas przestrzeni nazw SqlClient

Myślałem, że zdobędę przechwycenie dowolnego sql, który został wykonany, ale wygląda na to, że nie przechwytuje poleceń w sposób w jaki napisany jest nasz kod.

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

mogę je dostarczyć informacji ze strony testowej z kodem SQL napisany tak:

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

Jednak mam zbyt wiele miejsca w moim kodzie się zmienić, jeśli mogę tylko przechwytywać dane przy użyciu tej metody dbProviderFactories.

Czy istnieje sposób na uzyskanie Glimpse.ADO do pracy z klasą System.Data.SqlClient.SqlConnection? Czy istnieje inne rozszerzenie Glimpse, które działa z tym obszarem nazw?

Czy istnieje inny sposób rozwiązania tego problemu?

+1

Po prostu obserwacja: jeśli w kodzie jest za dużo miejsc, które tworzą połączenie w określony sposób, może to być znak, że kod jest zbyt powtarzalny. – StriplingWarrior

+1

Być może, ale jak ktoś mądrzejszy niż ja powiedziałem: "Gdziekolwiek jesteś, tam musisz zacząć" – Aheho

Odpowiedz

6

Zgadzam się z @StriplingWarrior, wykorzystanie fabryk dostawców sprawi, że kod będzie bardziej SUCHY i postępować zgodnie z najlepszymi praktykami. DbProviderFactories to naprawdę najlepszy sposób na zrobienie tego, a Twój kod nie będzie polegał wyłącznie na Glimpse.

Jeśli jednak naprawdę chcesz po prostu iść do przodu z istniejącym kodzie aplikacji, Glimpse wesprze cię z następującymi zmianami:

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

W powyższym przykładzie, polecenie jest tworzony z CreateCommand() metoda, która usuwa potrzebę powiązania polecenia i połączenia.

Alternatywnie, można również nadal jawnie tworzyć polecenia tak:

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

Wreszcie bardziej dokumentację o zakładce SQL jest dostępna poprzez kliknięcie ikony w interfejsie Glimpse ? gdy masz kartę wybrany, lub przechodząc do naszej SQL documentation na getGlimpse.com. (będę dodanie tej informacji do tej strony w przyszłości.)

+0

Jaką przestrzeń nazw deklaruje GlimpseDbConnection? – Aheho

+0

'Glimpse.Ado.AlternateType' jest w pakiecie' Glimpse.Ado'. – anthonyv

Powiązane problemy