Может ли ServiceStack MiniProfiler отображать значения параметров SQL, а не только имена связанных параметров?

У меня включен ServiceStack MiniProfiler на моем AppHost (в Application_Start), и я могу просматривать SQL, сгенерированный OrmLite на моей странице. (с использованием 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. Я просто не вижу этого в выводе визуализированного профилировщика.

Любые идеи, что мне нужно сделать, чтобы показать значения параметров?


person Doug Schmidt    schedule 24.09.2013    source источник


Ответы (1)


Ответ можно найти здесь: Может ли MvcMiniProfiler отображать значения параметров SQL?

Добавьте это в Application_Start

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

Однако при использовании nvarchar/varchar в качестве типа параметра возникает небольшая проблема. См. эту тему.

person Stef Heyenrath    schedule 14.11.2013
comment
Неа. Это не работает. Фрагмент кода, который вы разместили, работает для исходного проекта MvcMiniProfiler, а не для ответвления, встроенного в ServiceStack. Код SS-форка будет таким: Profiler.Settings.SqlFormatter = new ServiceStack.MiniProfiler.SqlFormatters.SqlServerFormatter(); но это все еще не работает. Я вижу только символ @0, но не значение @0 - person Doug Schmidt; 04.12.2013