2013-09-24 18 views
7

Ho il ServiceStack MiniProfiler abilitato nel mio AppHost (in Application_Start), e posso visualizzare l'SQL generato da OrmLite nella mia pagina. (utilizzando SS v3.9.59.0)Il MiniProfiler di ServiceStack mostra i valori dei parametri SQL, non solo i nomi dei parametri associati?

Cosa I non può vedere nella traccia del profilo sono i valori dei parametri associati. Quindi se OrmLite traduce un'espressione LINQ in @ 0, non riesco a vedere il valore inviato al DB come parte della query.

Ecco una traccia ad esempio dal profiler:

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

mi piacerebbe davvero sapere quale valore è stato inviato per @0 per questa query.

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

Ho provato alcune varianti della proprietà Profiler.Settings.SqlFormatter:

  • SqlFormatter = new InlineFormatter();
  • SqlFormatter = new InlineFormatter(true);
  • SqlFormatter = new SqlServerFormatter();
  • Non impostando SqlFormatter affatto, lasciando al suo valore di default

Tutti hanno lo stesso risultato, mostrando solo @0 ma non il suo valore.

Se faccio clic sul collegamento "Condividi", posso vedere sia il nome del parametro associato che il suo valore nell'array JSON risultante. Non riesco proprio a vederlo nell'output del rendering renderizzato.

Qualche idea di cosa devo fare per mostrare i valori dei parametri?

risposta

3

risposta può essere trovata qui: Can MvcMiniProfiler display SQL parameter values?

Aggiungi questo al Application_Start

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

Tuttavia sembra che ci sia un piccolo problema quando si utilizza nvarchar/varchar come tipo di parametro. Vedi questo topic.

+0

No. Questo non funziona. Lo snippet di codice che hai pubblicato funziona per il progetto MvcMiniProfiler originale, non per il fork incorporato in ServiceStack. Il codice a forcella SS sarà: Profiler.Settings.SqlFormatter = new ServiceStack.MiniProfiler.SqlFormatters.SqlServerFormatter(); ma ancora non funziona. Vedo solo il simbolo @ 0 ma non il valore di @ 0 –