ОБНОВЛЕНИЕ: Я только что заметил, что этот вопрос касается 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>
, поэтому вы можете передать любой метод, который принимает строку в качестве параметра.