2012-09-17 21 views
6

Mam istniejącą funkcję połączenia db w aplikacji formularzy internetowych, którą chciałbym zintegrować z mini profiler. Mam zainstalowany mini profiler i uruchamiam aplikację, ale nie mogę sprawić, że część bazy danych jest poprawnie podłączona. Poniżej znajduje się część kodu, z którym łączymy się z bazą danych za pomocą.Profil Mini zintegrowany z SqlConnection

public override IEnumerable<IDataRecord> Execute() 
{ 
    using(SqlConnection conn = new SqlConnection(ConnectionString)) { 
     using(SqlCommand command = new SqlCommand(CommandText, conn)) { 
      command.CommandType = SQLCommandType; 
      foreach(SqlParameter p in ParamsToAdd) { 
       command.Parameters.Add(p); 
      } 
      conn.Open(); 
      SqlDataReader rdr; 
      try { 
       rdr = command.ExecuteReader(); 
      } catch(Exception ex) { 
       //log error 
      } 
      using(rdr) { 
       while(rdr.Read()) { 
        yield return (IDataRecord)rdr; 
       } 
      } 
     } 
    } 
} 

mogę łatwo umieścić krok wokół ExecuteReader() tak:

using(MiniProfiler.Current.Step(command.CommandText)) { 
    rdr = command.ExecuteReader(); 
} 

ale to sprawia, że ​​mini profilera o jako użyteczny jako śladu, a ja chcąc uzyskać zapytanie funkcji pokazano na Strona. Jakaś pomoc?

Odpowiedz

1

@aghilas odpowiedź używał innego biblioteki, ale było wystarczających podkreślić mój błąd, że nie może wydawać dowiedzieć się wcześniej.

Skończyło się na konieczności zmiany z SqlConnection na DbConnection i takie samo dla SQLCommand => DbCommand i SQLDataReader => DbDataReader. Pozwoliło to na poprawne połączenie ProfiledDbConnection.

... 
using StackExchange.Profiling; 
using StackExchange.Profiling.Data; 
... 
using(DbConnection conn = new ProfiledDbConnection(new SqlConnection(ConnectionString), MiniProfiler.Current)) { 
     using(DbCommand command = conn.CreateCommand()) { 
      command.CommandText = CommandText; 
      command.Connection = conn; 
      command.CommandType = SQLCommandType; 
      foreach(SqlParameter p in ParamsToAdd) { 
       command.Parameters.Add(p); 
      } 
      conn.Open(); 
      DbDataReader rdr; 
      try { 
       rdr = command.ExecuteReader(); 
      } catch(Exception ex) { 
       //log error 
      } 
      using(rdr) { 
       while(rdr.Read()) { 
        yield return (IDataRecord)rdr; 
       } 
      } 
     } 
    } 
Powiązane problemy