C# 如何读取Dapper生成的SQL查询?
我有一个标准代码:C# 如何读取Dapper生成的SQL查询?,c#,logging,dapper,C#,Logging,Dapper,我有一个标准代码: public IEnumerable ExperimentSelect(object parameters) { using (var connection = new SqlConnection(ConnectionString)) { connection.Open(); var dynamicparam = new DynamicParameters(parameters); var rows = con
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查询源。我在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命令,但是如果您想报告更高级的信息,模型中会包含更多的信息。如果Dapper有一个SQLMapper.GridReader的扩展,可以转储生成的SQL,那就太好了。它是开源的,所以你也可以自己调整它。我刚试过,GitHub项目甚至没有在我的开发机器上编译欢迎来到开源世界。