如何在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