2012-09-17 14 views
6

mini profiler ile entegre etmek istediğim bir web formları uygulamasında mevcut bir db bağlantı işlevim var. Uygulamam yüklenen ve çalışan mini profiler var, ancak veritabanı bölümü düzgün bağlanmış gibi görünmüyor. Aşağıda db ile bağlandığımız kodun bir kısmı bulunmaktadır.Mini Profiler SqlConnection ile entegre

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

ancak bu iz kadar yararlı ilgili mini profiler yapar ve ben gösterilen özellikler sorgu almak isteyen ediyorum:

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

kolayca şöyle) ExecuteReader etrafında bir adım (koyabilirsiniz site. Herhangi bir yardım?

cevap

1

@aghilas cevap başka kütüphane kullanıyordum ama görünmüyor ki hatamı işaret etmek enought oldu Daha önce anlamaya.

SqlConnection kullanarak DbConnection ve SQLCommand => DbCommand ve SQLDataReader => DbDataReader için kullanmaktan değiştirmek zorunda kaldım. Bu, ProfiledDbConnection'ın doğru şekilde bağlanmasına izin verdi.

... 
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; 
       } 
      } 
     } 
    } 
İlgili konular