Dapperによって生成されたSQLクエリを読むには?

c# dapper logging

質問

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

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

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

人気のある回答

私はMiniProfilerを使ってASP.Net MVCアプリでこの作業をすることができました

まず、ドキュメントごとにMiniProfilerを設定します。 ProfiledDbConnection内でSqlConnectionをラップしていることを確認してください。

この機能が動作するようにビジュアルウィジェットを有効にする必要はなく、各要求の前に開始され、各要求の後で終了するようにするだけです。

次に、その要求のプロファイルが停止している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コマンドをダンプしますが、より高度な情報を報告したい場合は、モデルにもっと多くの情報が含まれています。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow