Вопрос

The default CommandTimeout value is 30 seconds. You can manually change the value on an instance of the command object by doing the following

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

Is there a way to specify a different default value, such that all new command objects will automatically have this value within your solution when they are created?

Это было полезно?

Решение

As far as I know no, there is no way to change this default. The constructor code for a SqlCommand is this:

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);
}

A possible workaround is to use a predefined SqlCommand passed as argument to the constructor that takes a SqlCommand as argument.

So you could create a global SqlCommand (a template)

 Dim commandTemplate60 = new SqlCommand()
 commandTemplate60.Timeout = 60

and then when you need a command with a timeout of 60 seconds

Dim cmd As New System.Data.SqlClient.SqlCommand(commandTemplate60)

However, setting directly the Timeout, doesn't seems to be a lot of work

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top