为所有新的命令对象设置自定义默认CommandTimeout



默认的CommandTimeout值为30秒。您可以通过执行以下手动更改命令对象实例的值

Dim cmd As New System.Data.SqlClient.SqlCommand
cmd.CommandTimeout = 60

是否有一种方法可以指定不同的默认值,以便所有新的命令对象在创建时都会自动在解决方案中具有该值?

据我所知,没有办法更改此默认值。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)

然而,直接设置Timeout似乎没有太多工作

相关内容

  • 没有找到相关文章

最新更新