Я пытаюсь захватить запрос Db для этого ниже фрагмента веб-приложения C# .net.Захват запросов ADO.net DB во время выполнения
Есть способ сделать, если я использую DbProviderfactory, создав прокси-сервер. Но вместо использования DbProviderFactory, если я использую SqlConnection и SqlCommand, как показано ниже, как я могу отслеживать свои вызовы БД?
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());
}
Я знаю, что есть профайлеры, чтобы проследить это. Но я хочу сделать это в своей собственной программе.
В основном мне нужно профилировать команды Db Connection и Db в веб-запросе, который не использует в нем DbProviderFactories. Я новичок в разработке профилировщиков для .Net, поэтому я ожидаю некоторых рекомендаций для этого.
Спасибо.
'SqlCommand' закрытый класс, так что использование прокси-сервера, как замок не будет работать. Он наследует [System.MarshalByRefObject] (http://msdn.microsoft.com/en-us/library/system.marshalbyrefobject%28v=vs.110%29.aspx), поэтому возможно было бы как-то вставить сообщение опускается в цепочку. Вот статья на эту тему: [Разделить компоненты путем внедрения пользовательских сервисов в цепочку перехвата вашего объекта] (http://msdn.microsoft.com/en-us/magazine/cc164165.aspx). Если вам удастся, отправьте пример. Я бы хотел сделать то же самое (мне просто не хватает времени, чтобы попробовать). –