web-dev-qa-db-ja.com

Dapper.NETでCommandTimeoutを調整しますか?

私は、Dapperを介してストアドプロシージャを介してSQLバックアップを実行しようとしています(アプリの残りの部分ではDapperを使用しているため、この部分も実行することをお勧めします)。 CommandTimeoutが起動するまでは正常に機能します。

using (var c = SqlConnection(connstring))
{
    c.Open();
    var p = new DynamicParameters();
    // fill out p

    c.Execute("xp_backup_database", p, commandType: CommandType.StoredProcedure);
}

私が知っている唯一のCommandTimeout設定は、SqlCommandにあります。これをDapper経由で設定する方法はありますか?

72
sh-beta

はい、Execute関数には複数のバージョンがあります。それらの1つ(または複数)には、commandTimeoutパラメーターが含まれています。

public static int Execute(this IDbConnection cnn, string sql, 
                dynamic param = null, IDbTransaction transaction = null, 
                            int? commandTimeout = null, CommandType? commandType = null)

SqlMapper.cs から取得

85
jzacharuk

誰でも希望する場合に備えて、受け入れられた回答が追加された元の質問の例。 (タイムアウトは60秒に設定されています):

using (var c = SqlConnection(connstring))
{
    c.Open();
    var p = new DynamicParameters();
    // fill out p

    c.Execute("xp_backup_database", p, commandTimeout: 60, 
                                       commandType: CommandType.StoredProcedure);
}
49
Adrian Carr