15

私は標準的なコードを持っています:

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

NLogなどを使用して、Dapperによって生成されたクエリのファイルへの保存を自動化する方法は? SQL Server Profiler に示されているように、SQL クエリのソースを取得することを考えています。

4

1 に答える 1

5

MiniProfilerを使用して、ASP.Net MVC アプリでこれを機能させることができました。

まず、ドキュメントに従って MiniProfiler を構成します。SqlConnection を ProfiledDbConnection 内にラップしていることを確認してください。

これを機能させるためにビジュアル ウィジェットを有効にする必要はありません。プロファイルが各リクエストの前に開始され、終了したことを確認してください。

次に、その要求のプロファイルが停止している global.asax.cs で、次のように修正します。

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

これは文字通り、実行された SQL コマンドをダンプしますが、より高度な情報を報告したい場合は、モデルに含まれるより多くの情報があります。

于 2013-10-30T17:25:21.643 に答える