2013-01-14 12 views
12

Mam standardowy kod:Jak odczytać zapytanie SQL wygenerowane przez Dapper?

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

Jak zautomatyzować zapytań oszczędności wygenerowanych przez Dapper do pliku przy użyciu np NLog? Mam na myśli uzyskanie źródła kwerend SQL, jak pokazano w programie SQL Server Profiler.

+0

Byłoby świetnie, gdyby Dapper miał rozszerzenie do SQLMapper.GridReader, które zrzucił wygenerowany SQL. Jest to oprogramowanie open source, więc możesz je także sam zmodyfikować. Po prostu próbowałem, a projekt GitHub nawet nie skompilował na moim komputerze. :) Witamy w świecie open source. – Pompair

Odpowiedz

5

udało mi się dokonać tej pracy w aplikacji ASP.Net MVC przy użyciu MiniProfiler.

Najpierw należy skonfigurować MiniProfiler zgodnie docs. Upewnij się, że owijasz SqlConnection wewnątrz ProfiledDbConnection.

Należy zauważyć, że nie trzeba włączać widżetu wizualnego, aby to działało, wystarczy upewnić się, że profil jest uruchamiany przed i zakończony po każdym żądaniu.

Następnie w Global.asax.cs gdzie profil dla tego wniosku jest zatrzymany, zmienić ją w następujący sposób:

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

To dosłownie zrzuca polecenia SQL wykonywane, ale jest o wiele więcej informacji zawartych w model, jeśli chcesz zgłosić bardziej zaawansowane informacje.

Powiązane problemy