我有一个标准代码:
public IEnumerable ExperimentSelect(object parameters)
{
using (var connection = new SqlConnection(ConnectionString))
{
connection.Open();
var dynamicparam = new DynamicParameters(parameters);
var rows = connection.Query("[dbo].[ptbSapOrderSelect]", dynamicparam,
commandType: CommandType.StoredProcedure);
if (rows.Any())
TotalRows = ((long)rows.ToList()[0].TotalRows);
return rows;
}
}
如何使用 NLog 自动将 Dapper 生成的查询保存到文件中?我正在考虑获取 SQL Server Profiler 中所示的 SQL 查询源。
最佳答案
我设法使用 MiniProfiler. 在 ASP.Net MVC 应用程序中完成这项工作
首先,按照文档配置 MiniProfiler。确保将 SqlConnection 包装在 ProfiledDbConnection 中。
请注意,您不需要为此启用可视化小部件,只需确保配置文件在每个请求之前启动并在每个请求之后结束即可。
接下来,在停止该请求的配置文件的 global.asax.cs 中,修改如下:
protected void Application_EndRequest()
{
// not production code!
MiniProfiler.Stop();
var logger = NLog.LogManager.GetCurrentClassLogger();
var instance = MiniProfiler.Current;
if (instance == null) return;
var t = instance.GetSqlTimings();
foreach (var sqlTiming in t)
{
logger.Debug(sqlTiming.CommandString);
}
}
这确实转储了执行的 SQL 命令,但如果您想报告更高级的信息,模型中还包含更多信息。
关于c# - 如何读取 Dapper 生成的 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318571/