Запросы именования Entity Framework

#c# #sql-server #entity-framework #azure #sql-server-profiler

#c# #sql-сервер #entity-framework #azure #sql-сервер-профилировщик

Вопрос:

Мы анализируем Azure «Query Performance Insight» для поиска дорогостоящих запросов, проблема в том, что нет способа связать SQL, созданный с запросом Entity Framework.

Есть ли какой-либо метод расширения или что-нибудь еще, чтобы сделать что-то подобное:

Сгенерированный SQL:

 -- BlahMethod
SELECT Id
FROM Table1
  

Entity Framework cmd:

 Context.Table1.Naming("BlahMethod").ToList()
  

Или даже лучше:

 Context.Table1.ToList() // intercept sql generated by EF and put through reflection the Method and Namespace "MyAssembly.Foo.MyMethodName"
  

Сгенерированный SQL:

 -- MyAssembly.Foo.MyMethodName
SELECT Id
FROM Table1
  

Ответ №1:

Да, посмотрите на эту статью Ведение журнала и перехват операций с базой данных .

Это может быть так же просто, как использовать консоль.Написать:

 using (var context = new BlogContext()) 
{ 
    context.Database.Log = Console.Write; 

    // Your code here... 
}
  

Или вы можете использовать класс журнала:

   using (var db = new MyDBContext())
            {

                db.Database.Log = s => Log.TraceVerbose("DB Context:{0}", s);
...
  

Комментарии:

1. Нет, я хочу войти в сгенерированный sql

2. Это именно то, каким будет журнал. Сгенерированный SQL-запрос, прочитайте ссылку в сообщении.