ServiceStack MiniProfiler可以显示SQL参数值,而不仅仅是绑定的参数名称吗?

时间:2013-09-24 00:11:13

标签: servicestack mvc-mini-profiler ormlite-servicestack

我在AppHost中启用了ServiceStack MiniProfiler(在Application_Start中),我可以在我的页面中查看OrmLite生成的SQL。 (使用SS v3.9.59.0)

无法在配置文件跟踪中看到的是绑定参数的值。因此,如果OrmLite将LINQ表达式转换为@ 0,我无法看到作为查询的一部分发送到数据库的值。

以下是分析器的示例跟踪:

SELECT "SettingGroup" , "SettingKey" , "LastModified" , "SettingValue"  
FROM "GlobalSetting"
WHERE (("SettingGroup" = @0) AND ("SettingKey" = 'a3849d59864b252a2022b4b8a164add1'))

我真的想知道为此查询发送了@0的值。

protected void Application_Start(object sender, EventArgs e)
{
    Profiler.Settings.SqlFormatter = new InlineFormatter(true);
    new AppHost().Init();
}

我尝试了Profiler.Settings.SqlFormatter属性的一些变体:

  • SqlFormatter = new InlineFormatter();
  • SqlFormatter = new InlineFormatter(true);
  • SqlFormatter = new SqlServerFormatter();
  • 根本不设置SqlFormatter,将其保留为默认值

所有这些都有相同的结果,只显示@0但不显示其值。

如果单击“共享”链接,我可以在生成的JSON数组中看到绑定参数名称及其值。我只是在渲染的探查器输出中看不到它。

我需要做些什么才能显示参数值?

1 个答案:

答案 0 :(得分:3)

答案可以在这里找到:Can MvcMiniProfiler display SQL parameter values?

将其添加到Application_Start

MiniProfiler.Settings.SqlFormatter = 
    new StackExchange.Profiling.SqlFormatters.SqlServerFormatter();

但是,当使用nvarchar / varchar作为参数类型时,似乎存在一个小问题。请参阅此topic