Получите сгенерированный SQL для DbContext.SaveChanges в Entity Framework Core - PullRequest
0 голосов
/ 26 мая 2019

В Entity Framework Core возможно ли увидеть SQL, который будет применяться при вызове метода SaveChanges() для DbContext?

Ответы [ 2 ]

1 голос
/ 26 мая 2019

Вы можете использовать DbContextOptionsBuilder.UseLoggerFactory(loggerFactory) метод для регистрации всех выходных данных sql. Используя конструктор Injection, как показано ниже

public class DemoContext : ObjContext
{
    private readonly ILoggerFactory _loggerFactory;

    public DemoContext() { }

    public DemoContext(ILoggerFactory loggerFactory)
    {
        _loggerFactory = loggerFactory;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        base.OnConfiguring(optionsBuilder);

        optionsBuilder.UseLoggerFactory(_loggerFactory);
    }
}

using (var context = new DemoContext(_loggerFactory))
{
    var Employees = context.Employee.ToList();
}

Или

Я предлагаю несколько других способов просмотра сгенерированного SQL - использовать отражение для создания ObjectQuery object, а затем вызвать метод ToTraceString() для фактического сохранения результатов запроса.

using (var context = new EntityContext())
{
    var query = context.Customers.Where(c => c.Id == 1); 
    var sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString();  
}

Использовать ведение журнала SQL

Использование DbContext.Database.Log property может быть установлено для делегата для любого метода, который принимает строку.

Вход SQL в консоль.

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

Журнал SQL в панель вывода Visual Studio.

using (var context = new EntityContext())
{
    context.Database.Log = s => System.Diagnostics.Debug.WriteLine(s); 

}
1 голос
/ 26 мая 2019

вы можете использовать консольный регистратор "EF Core logging автоматически интегрируется с механизмами регистрации .NET Core", о котором вы можете прочитать здесь: https://www.entityframeworktutorial.net/efcore/logging-in-entityframework-core.aspx

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