Подтвердить что ты не робот

Задайте настраиваемый по умолчанию CommandTimeout для всех новых объектов Command

Значение по умолчанию CommandTimeout составляет 30 секунд. Вы можете вручную изменить значение в экземпляре объекта команды, выполнив следующие

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

Есть ли способ указать другое значение по умолчанию, так что все новые объекты команды будут автоматически иметь это значение в вашем решении, когда они будут созданы?

4b9b3361

Ответ 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)

Однако, задавая непосредственно тайм-аут, кажется, не много работы