Показать T-sql в решении с использованием entityframework - PullRequest
0 голосов
/ 30 апреля 2019

Когда я использовал linq в инфраструктуре сущностей и хотел посмотреть на мой запрос t-sql, я использовал профилировщик sql, но есть ли способ увидеть t-sql в моем решении?

1 Ответ

0 голосов
/ 30 апреля 2019

ОБНОВЛЕНИЕ: Я только что заметил, что этот вопрос касается EF Core, поэтому я не уверен, что этот метод будет работать.Я оставлю ответ на всякий случай.

ОБНОВЛЕНИЕ 2: Очевидно, простой метод Log, описанный ниже, уже не так прост в EF Core.Я нашел эту запись в блоге:

https://blogs.msdn.microsoft.com/dbrowne/2017/09/22/simple-logging-for-ef-core/

, которая сопровождает комментарий @Jonesopolis выше.

Если вы просто хотите увидеть T-Sql, этосгенерированный вашими запросами Entity Framework, вы можете использовать свойство Log вашего контекста данных и указать метод для вызова.

Например:

using (var ctx = new MyDataContext())
{
    ctx.Database.Log = Console.WriteLine;

    var results = ctx.SomeTable.Where(<some predicate here>);

    foreach (var row in results)
    {
        //Do something with row here
    }
}

В этом примере я настроил вызов Console.WriteLine при регистрации.Запрос SQL будет отображаться в консоли с использованием метода WriteLine.

Свойство Log имеет тип Action<string>, поэтому вы можете передать любой метод, который принимает строку в качестве параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...