2015-01-21 6 views
3

Этот вопрос будет глупым для тех, кто является вундеркиндом на C# и профайлерах.Использование MiniProfiler для прямых вызовов ADO.net

Я новичок в C# (в основном разработчик C++). Я могу профилировать запросы к базе данных, если он использует dbproviderfactory, но я не могу профилировать вызовы ado.net, когда он используется напрямую (raw SqlConnection & SqlCommand). Я столкнулся с кодом Miniprofiler, где они также просматривают прямые вызовы ADO.net. Я просто не знаю, как его использовать (интегрируйте его в профилировщик).

Мой код

 SqlConnection myConn = new SqlConnection(@"Server=192.168.23.99;Initial Catalog=cat1;User ID=user21;Password=userpwd"); 
     SqlCommand myCommand = new SqlCommand("select * from table1", myConn); 
     SqlDataReader dataReader; 

     System.Threading.Thread.Sleep(5000); 
     try 
     { 
      myConn.Open(); 
      dataReader = myCommand.ExecuteReader(); 

      GridView1.DataSource = dataReader; 
      GridView1.DataBind(); 
      dataReader.Close(); 
      myCommand.Dispose(); 
      myConn.Close(); 
     } 
     catch (System.Exception ex) 
     { 
      Response.Write(ex.ToString()); 
     } 

Когда приведенный выше код запускается на выполнение, как будет классы в MiniProfiler будет называться? Как сделать эти классы (надеюсь, что имя класса SimpleProfiledDbCommand) вызвано, когда мое веб-приложение вызывает SqlCommand (..).?

Нужно лучше пояснить это.

ответ

2

Согласно documentation, вам нужно обернуть SqlConnection с помощью прилагаемого ProfiledDbConnection, который способен отслеживать ваши запросы:

SqlConnection underlyingConn = new SqlConnection(@"Server=192.168.23.99;Initial Catalog=cat1;User ID=user21;Password=userpwd"); 

SqlConnection myConn = new StackExchange.Profiling.Data.ProfiledDbConnection(underlyingConn, MiniProfiler.Current); 
+0

благодаря haim770.! Так что это невозможно сделать во время выполнения. Обряд? –

+1

Я не очень хорошо знаком с MiniProfiler, но я так считаю. – haim770