Использование MiniProfiler для прямых вызовов ADO.net
Этот вопрос будет глупым для тех, кто является фанатами C# и профилировщиков.
Я новичок в 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(..).?
Нужно лучшее разъяснение по этому вопросу.
1 ответ
Согласно документации, вам нужно обернуть 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);