2013-09-24 3 views
7

Ich habe das ServiceStack MiniProfiler in meinem AppHost (in Application_Start) aktiviert, und ich kann das von OrmLite auf meiner Seite generierte SQL anzeigen. (unter Verwendung von SS v3.9.59.0)Kann der ServiceStack MiniProfiler SQL-Parameterwerte anzeigen, nicht nur die gebundenen Parameternamen?

Was ich kann nicht in der Profilablaufverfolgung sehen Sie die Werte der gebundenen Parameter. Wenn also OrmLite einen LINQ-Ausdruck in @ 0 übersetzt, kann ich den Wert, der als Teil der Abfrage an die DB gesendet wird, nicht sehen.

Hier ist ein Beispiel-Trace aus dem Profiler:

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

ich wirklich wissen möchte, welchen Wert für @0 für diese Abfrage gesendet wurde.

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

Ich habe ein paar Varianten der Profiler.Settings.SqlFormatter Eigenschaft versucht:

  • SqlFormatter = new InlineFormatter();
  • SqlFormatter = new InlineFormatter(true);
  • SqlFormatter = new SqlServerFormatter();
  • Nicht SqlFormatter überhaupt einstellen, es auf seinem Standardwert verlassen

Alle haben das gleiche Ergebnis und zeigen nur @0, aber nicht ihren Wert.

Wenn ich auf den Link "Freigabe" klicke, kann ich sowohl den Namen des gebundenen Parameters als auch seinen Wert im resultierenden JSON-Array sehen. Ich kann es nur nicht in der gerenderten Profilerausgabe sehen.

Irgendwelche Ideen, was ich tun muss, um die Parameterwerte zu zeigen?

Antwort

3

Antwort finden Sie hier: Can MvcMiniProfiler display SQL parameter values?

Fügen Sie diese auf Application_Start

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

Allerdings scheint es ein kleines Problem zu sein, wenn nvarchar/varchar als Parametertyp verwendet wird. Siehe hierzu topic.

+0

Nein. Das funktioniert nicht. Das Code-Snippet, das Sie gepostet haben, funktioniert für das ursprüngliche MvcMiniProfiler-Projekt, nicht von der in ServiceStack eingebetteten Verzweigung. Der SS-gegabelte Code wäre: Profiler.Settings.SqlFormatter = new ServiceStack.MiniProfiler.SqlFormatters.SqlServerFormatter(); aber das funktioniert immer noch nicht. Ich sehe nur das @ 0-Symbol, aber nicht den Wert von @ 0 –

Verwandte Themen