نمایش و لاگ کوئری ایجاد شده توسط EF6
زمانهایی پیش میاد که میخاید کوئری ایجاد شده توسط EF رو مشاهده و بررسی کنید
قبلن باید از ابزار profiler استفاده میکردید اما این امکان در EF6 بضورت توکار وجود داره
فقط "Microsoft.EntityFrameworkCore.Database.Command": "Information" رو به appsettings.Development.json اضافه کنید
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDB-2;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
,"Microsoft.EntityFrameworkCore.Database.Command": "Information"
}
},
"AllowedHosts": "*"
}
خروجی SQL در پنجره فرمان یا پنجره output نشون داده می شه.
البته از EF 5 هم میشد از متد ()LogTo در startup استفاده کرد
public class AppDbContext : DbContext
{
public DbSet<Customer> Customers { get; set; }
public AppDbContext(DbContextOptions<AppDbContext> options): base(options) { }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.LogTo(Console.WriteLine);
}
روش 2:
برای استفاده از این، میخواهید یک breakpoint زیر کوئری EF Core خود تعیین کنید.
لاگ کردن کوئریهای ایجاد شده
تا اینجا روشهایی برای دیدنکوئری ها یادگرفتیم حالا اگر بخاید از داخل کد به کوئری ایجاد شده دسترسی داشته باشید و لاگ کنید میتونید از تابع ()ToQueryString استفاده کنید
برای این کار، باید با استفاده از متد ()query.ToQueryString یک متغیر ایجاد کنید. سپس می توانید آن را روی کنسول بنویسید.