我正在尝试通过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来设置?
发布于 2012-01-10 05:22:45
是的,Execute函数有多个版本。其中一个(或多个)参数包含commandTimeout参数:
public static int Execute(this IDbConnection cnn, string sql,
dynamic param = null, IDbTransaction transaction = null,
int? commandTimeout = null, CommandType? commandType = null)
发布于 2015-08-14 02:38:41
添加了接受答案的原始问题的示例,以防任何人想要它。(超时设置为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);
}
发布于 2020-06-30 18:25:48
不需要为所有查询/Db调用设置命令超时。您可以像下面这样全局设置它。
Dapper.SqlMapper.Settings.CommandTimeout = 0;
可以在应用程序加载时或在数据库类构造函数中初始化此静态属性。
这有助于消除重复,如果您以后决定更改它,只需在一个地方更改一次。
https://stackoverflow.com/questions/8794858
复制相似问题