在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来设置?

是的,执行function有多个版本。 其中一个(或多个)包含commandTimeout参数:

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

取自SqlMapper.cs

从原始问题的例子加上接受的答案,以防万一任何人想要它。 (超时设置为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); }