Как посмотреть SQL, сгенерированный Entity Framework?

ado.net entity-framework

Вопрос

Как посмотреть SQL, сгенерированный структурой сущностей?

(В моем конкретном случае я использую провайдер MySQL - если это имеет значение)

Принятый ответ

Вы можете сделать следующее:

IQueryable query = from x in appEntities
             where x.id = 32
             select x;

var sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString();

или в EF6:

var sql = ((System.Data.Entity.Core.Objects.ObjectQuery)query)
            .ToTraceString();

Это даст вам сгенерированный SQL.


Популярные ответы

Для тех, кто использует Entity Framework 6 и выше, если вы хотите просмотреть выходной SQL в Visual Studio (как я сделал), вы должны использовать новую функцию ведения журнала / перехвата.

Добавление следующей строки приведет к тому, что сгенерированный SQL (вместе с дополнительными подробностями, связанными с выполнением) будет отображаться на панели вывода Visual Studio:

using (MyDatabaseEntities context = new MyDatabaseEntities())
{
    context.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
    // query the database using EF here.
}

Дополнительная информация о входе в EF6 в этой замечательной серии блогов: http://blog.oneunicorn.com/2013/05/08/ef6-sql-logging-part-1-simple-logging/

Примечание. Убедитесь, что ваш проект запущен в режиме отладки.



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему