2012-09-17 15 views
6

के साथ एकीकृत करता है मेरे पास एक वेब फॉर्म ऐप में एक मौजूदा डीबी कनेक्शन फ़ंक्शन है जिसे मैं mini profiler के साथ एकीकृत करना चाहता हूं। मेरे पास मिनी प्रोफाइलर स्थापित है और ऐप पर चल रहा है, लेकिन मुझे डेटाबेस हिस्से को ठीक से कनेक्ट नहीं लग रहा है। नीचे कोड का हिस्सा है जिसे हम डीबी से कनेक्ट करते हैं।मिनी प्रोफाइलर 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; 
       } 
      } 
     } 
    } 
} 

मैं आसानी से ExecuteReader के चारों ओर एक कदम() इतना की तरह रख सकते हैं:

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

लेकिन इस का पता लगाने के रूप में रूप में उपयोगी के बारे में मिनी प्रोफाइलर बनाता है और मैं पर दिखाया सुविधाओं क्वेरी पाने के लिए इच्छुक हूँ जगह। कोई मदद?

उत्तर

1

@aghilas जवाब कुछ अन्य पुस्तकालय उपयोग कर रहा था, लेकिन अपनी गलती का कहना है कि मैं ही नहीं सकता था enought था पहले पता लगाने के लिए।

मैं एसबीएलकनेक्शन का उपयोग करने के लिए डीबीकनेक्शन का उपयोग करने और SQLCommand => DbCommand, और SQLDataReader => DbDataReader के लिए इसे बदलने के लिए बदलना समाप्त कर दिया। इसने ठीक से कनेक्ट करने के लिए 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; 
       } 
      } 
     } 
    } 
9

आप इस कोड के साथ की कोशिश कर सकते हैं - ProfiledDbConnection वर्ग के आधार पर

var connection = MiniProfiler.Data.ProfiledDbConnection.Get(new SqlConnection(str)); 
var cmd = connection.CreateCommand(); 
var param = connection.CreateParameter(); 

लिंक: https://github.com/ServiceStack/ServiceStack/tree/master/src/ServiceStack/MiniProfiler/Data

+1

यह काम करने की कोशिश कर रहा है लेकिन मुझे "मिनीप्रोफाइलर में डेटा के लिए परिभाषा नहीं है" – ThunD3eR

संबंधित मुद्दे