Regolare CommandTimeout in Dapper.NET?

.net c# dapper timeout

Domanda

Sto cercando di eseguire i backup SQL attraverso una procedura memorizzata tramite Dapper (il resto della mia app utilizza Dapper quindi preferirei che anche questa parte lo eseguisse). Funziona bene fino a quando CommandTimeout non entra in azione.

using (var c = SqlConnection(connstring))
{
    c.Open();
    var p = new DynamicParameters();
    // fill out p

    c.Execute("xp_backup_database", p, commandType: CommandType.StoredProcedure);
}

L'unica impostazione CommandTimeout che conosco è in SqlCommand. C'è un modo per impostare questo via Dapper?

Risposta accettata

Sì, ci sono più versioni della funzione Esegui. Uno (o più) di essi contiene i parametri commandTimeout:

public static int Execute(this IDbConnection cnn, string sql, 
                dynamic param = null, IDbTransaction transaction = null, 
                            int? commandTimeout = null, CommandType? commandType = null)

Tratto da SqlMapper.cs


Risposta popolare

Esempio dalla domanda originale con aggiunta di risposta accettata, nel caso in cui qualcuno lo volesse. (Il timeout è impostato su 60 secondi):

using (var c = SqlConnection(connstring))
{
    c.Open();
    var p = new DynamicParameters();
    // fill out p

    c.Execute("xp_backup_database", p, commandTimeout: 60, 
                                       commandType: CommandType.StoredProcedure);
}


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché