Wie lese ich eine von Dapper generierte SQL-Abfrage?

c# dapper logging

Frage

Ich habe einen Standardcode:

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 automatisiert man das Speichern von Abfragen, die von Dapper erzeugt werden, in die Datei mit zB NLog? Ich denke an Quelle der SQL-Abfrage wie im SQL Server Profiler angezeigt.

Beliebte Antwort

Ich habe es geschafft, dies in einer ASP.Net MVC App mit MiniProfiler zu machen.

Konfigurieren Sie zuerst MiniProfiler gemäß den Dokumenten. 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 Anfrage gestartet und beendet wird.

Als nächstes, in global.asax.cs, wo das Profil für diese Anfrage gestoppt ist, ä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);
    }
}

Dadurch wird im wahrsten Sinne des Wortes der SQL-Befehl ausgeführt, der ausgeführt wird. Es sind jedoch wesentlich mehr Informationen im Modell enthalten, wenn Sie erweiterte Informationen melden möchten.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum