默认CommandTimeout值为30秒。您可以通过执行以下操作手动更改命令对象实例上的值
Dim cmd As New System.Data.SqlClient.SqlCommand
cmd.CommandTimeout = 60
有没有办法指定不同的默认值,这样所有新命令对象在创建时都会在解决方案中自动拥有此值?
答案 0 :(得分:10)
据我所知,没有办法改变这个默认值。 SqlCommand的构造函数代码是:
public SqlCommand()
{
this.ObjectID = Interlocked.Increment(ref _objectTypeCount);
this._commandTimeout = 30;
this._updatedRowSource = UpdateRowSource.Both;
this._prepareHandle = -1;
this._rowsAffected = -1;
this._notificationAutoEnlist = true;
GC.SuppressFinalize(this);
}
一种可能的解决方法是使用预定义的SqlCommand作为参数传递给以SqlCommand作为参数的构造函数。
所以你可以创建一个全局的SqlCommand(模板)
Dim commandTemplate60 = new SqlCommand()
commandTemplate60.Timeout = 60
然后当你需要一个超时为60秒的命令时
Dim cmd As New System.Data.SqlClient.SqlCommand(commandTemplate60)
然而,直接设置超时,似乎没有太多工作