2013-01-14 5 views
12

Ich habe einen Standard-Code:Wie liest man eine von Dapper erzeugte SQL-Abfrage?

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; 
    } 
} 

Wie Einsparung Abfragen von Dapper in die Datei zB mit NLog erzeugt automatisieren? Ich denke an Quelle der SQL-Abfrage wie im SQL Server Profiler angezeigt. mit MiniProfiler.

Zuerst konfigurieren Miniprofiler nach den docs

+0

Wäre toll, wenn Dapper eine Erweiterung zu SQLMapper.GridReader hätte, die das generierte SQL ausgeben würde. Es ist Open Source, so dass Sie es auch selbst optimieren können. Ich habe es gerade versucht und das GitHub-Projekt kompiliert nicht einmal auf meiner Dev-Maschine. :) Willkommen in der Open-Source-Welt. – Pompair

Antwort

5

ich es geschafft, diese Arbeit in einer ASP.Net MVC-app zu machen. Stellen Sie sicher, dass Sie Ihre SqlConnection in eine ProfiledDbConnection einschließen.

Beachten Sie, dass Sie das visuelle Widget nicht aktivieren müssen, damit dies funktioniert. Stellen Sie nur sicher, dass ein Profil vor jeder Anforderung gestartet und beendet wird.

nächstes in global.asax.cs wo das Profil für diese Anforderung angehalten wird, ändern Sie es wie folgt:

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); 
    } 
} 

Diese buchstäblich Dumps den SQL-Befehl ausgeführt wird, aber es ist enthalten viel mehr Informationen in das Modell, wenn Sie erweiterte Informationen melden möchten.