在使用ABP框架(ASP.NET Boilerplate)进行开发时,有时需要将SQL查询输出到终端,以便于调试和性能分析。下面方法可以实现这一目的:
修改调试的启动项
我们打开ABP框架的启动站点项HttpApi.Host(我的项目是Org.NumBd.HttpApi.Host),修改对应的launchSettings.json,调试的时候,把默认IISExpress启动项修改为控制台启动
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:59891",
"sslPort": 0
}
},
"profiles": {
"Org.NumBd.HttpApi.Host": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:59891",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
此时,我们调试的时候,点击Org.NumBd.HttpApi.Host将同时启动控制台和游览器,访问对应程序的端口

修改DbContext
然后,我们需要打开对应的DbContext,重写OnConfiguring方法,在调试的时候,对外输出SQL,具体方法如下
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//日志输出SQL语句
#if DEBUG
optionsBuilder.LogTo(Console.WriteLine, LogLevel.Information)
.EnableSensitiveDataLogging();
#endif
base.OnConfiguring(optionsBuilder);
}
然后,我们后续调试的时候,就可以看到在控制台输出的SQL语句了
