【问题标题】:Set custom default CommandTimeout for all new Command Objects为所有新命令对象设置自定义默认命令超时
【发布时间】:2013-08-08 00:40:49
【问题描述】:

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

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

有没有办法指定不同的默认值,这样所有新的命令对象在创建时都会在您的解决方案中自动具有此值?

【问题讨论】:

  • Related question(未标记为 dup,这些问题在 imo 中存在一些显着差异,即使两者的答案相同。)

标签: .net vb.net sqlcommand sqlclient command-timeout


【解决方案1】:

据我所知,没有办法更改此默认设置。 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,好像工作量不大

【讨论】:

  • 不是默认值._commandTimeout = 30;的常量值?
猜你喜欢
  • 2013-09-26
  • 2021-09-07
  • 2013-09-12
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多