.net - 为所有新命令对象设置自定义默认命令超时

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

默认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,好像工作量不大

关于.net - 为所有新命令对象设置自定义默认命令超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18089812/

相关文章:

javascript - 使用 Ajaxcall 的 VB.net 文件上传

vb.net - CType 和类型特定强制转换(CInt、CBool​​、CStr)之间的区别?

c# - 如何在 C# 中使用存储过程返回结果列表?

C# 数据库中的多个并行插入

c# - 如何使用 SQL CE 加速 LINQ 插入?

c# - `CallVirt` 和 `New` 关键字

c# - Console.ReadKey() 不工作

c# - 加密字符串时重用 AES 对象是否安全?

vb.net - 我怎样才能简化和优化这个校验和代码?

c# - 需要参数 '@ID' ,但未提供?