Вы можете использовать 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);
}