El valor predeterminado CommandTimeout valor es de 30 segundos. Puede cambiar manualmente el valor de una instancia del objeto de comando de la siguiente

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

Hay una manera de especificar un valor predeterminado, de tal manera que todos los nuevos objetos de comando tendrá automáticamente este valor dentro de su solución cuando se crean?

una pregunta Relacionada con la (No marcar como dup, hay algunas diferencias significativas en esas preguntas de la omi, incluso si las respuestas a ambas son lo mismo.)

OriginalEl autor KyleMit | 2013-08-06

1 Comentario

  1. 10

    Que yo sepa no, no hay manera de cambiar este valor predeterminado. El constructor de código para un SqlCommand es este:

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

    Una posible solución es utilizar una plantilla predefinida de SqlCommand pasa como argumento para el constructor que toma un SqlCommand como argumento.

    Por lo que podría crear un global SqlCommand (una plantilla)

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

    y, a continuación, cuando usted necesita un comando con un tiempo de espera de 60 segundos

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

    Sin embargo, establecer directamente el tiempo de espera, no parece ser un montón de trabajo

    No el valor de la constante para el valor predeterminado ._commandTimeout = 30; ?

    OriginalEl autor Steve

Dejar respuesta

Please enter your comment!
Please enter your name here