2013-04-29 8 views
7

Ho scaricato Glimpse e l'estensione Glimpse.ADO e l'ho installata nella mia istanza di test.Can Glimpse fornisce la diagnostica quando si utilizzano le classi dello spazio dei nomi SqlClient

Ho pensato di ottenere una cattura di qualsiasi sql che è stato eseguito, ma sembra che non cattura i comandi con il modo in cui il nostro codice è scritto.

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

posso farlo di fornire informazioni da una pagina di prova con il codice SQL scritto in questo modo:

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

Tuttavia ho troppi luoghi nel mio codice per cambiare se posso catturare solo i dati usando questo metodo dbProviderFactories.

C'è un modo per ottenere Glimpse.ADO per lavorare con la classe System.Data.SqlClient.SqlConnection? Esiste un'altra estensione Glimpse che funziona con questo spazio dei nomi?

C'è un altro modo per affrontare questo problema?

+1

Solo un'osservazione: se ci sono troppi punti nel codice che creano una connessione in un modo specifico, potrebbe essere un segnale che il codice è troppo ripetitivo. – StriplingWarrior

+1

Forse, ma come qualcuno più intelligente di quanto ho detto, "Ovunque tu sia, è qui che devi iniziare" – Aheho

risposta

6

Sono d'accordo con @StriplingWarrior, sfruttando le fabbriche del provider renderemo il vostro codice più ASCIUTTO e seguiremo le migliori pratiche. DbProviderFactories è davvero il modo migliore per farlo e il tuo codice non si baserà esplicitamente su Glimpse.

Tuttavia, se si davvero desidera spostare solo in avanti con il codice di applicazione esistente, Glimpse vi sosterrà con le seguenti modifiche:

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

Nell'esempio qui sopra, il comando viene creato con il CreateCommand() metodo, che elimina la necessità di associare il comando e la connessione.

In alternativa, si potrebbe anche comunque creare esplicitamente il comando in questo modo:

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

Infine, più la documentazione sulla scheda SQL è disponibile facendo clic sull'icona ? nell'interfaccia utente Glimpse quando si ha la scheda selezionata, oppure andando al nostro SQL documentation su getGlimpse.com. (I aggiungeremo queste informazioni per la pagina per riferimento futuro.)

+0

In quale spazio dei nomi è stato dichiarato GlimpseDbConnection? – Aheho

+0

'Glimpse.Ado.AlternateType' è nel pacchetto' Glimpse.Ado'. – anthonyv

Problemi correlati