如何在EF Core 2.0中显示基础SQL查询?

在这个“ .NET Core 2.0 Released! ”video结束时的3:15,Diego Vega展示了Entity Framework Core 2.0中的新function演示。 作为其中一部分, 控制台应用程序中显示了底层SQL的转储。

在此处输入图像描述

我在Stack Overflow上看到很多答案,建议人们使用SQL分析器来查看底层查询。 但现在我很好奇:你怎么能做迭戈维加做的事情,并在应用程序中显示查询?

https://docs.microsoft.com/it-it/ef/core/miscellaneous/logging

在DbContext的OnConfuguring方法中,您可以设置记录器,登录控制台是预定义类型,只需使用此NuGet 。 请注意,使用Factory模式是记录器实例的最佳实践。

 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder .UseLoggerFactory(MyLoggerFactory) // Warning: Do not create a new ILoggerFactory instance each time .UseSqlServer( @"Server=(localdb)\mssqllocaldb;Database=EFLogging;Trusted_Connection=True;ConnectRetryCount=0"); 

您可以执行以下操作,在输出窗口中显示Entity Framework Core生成的sql代码。 在您的DbContext类中:

 public static readonly Microsoft.Extensions.Logging.LoggerFactory _myLoggerFactory = new LoggerFactory(new[] { new Microsoft.Extensions.Logging.Debug.DebugLoggerProvider() }); protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseLoggerFactory(_myLoggerFactory); } 

仅当附加调试器时,调试记录器才会在调试输出窗口中写入消息。

您必须执行以下操作:

  • 使用Microsoft.Extensions.Logging;
  • 安装nuget包:Microsoft.Extensions.Logging.Debug