¿Cómo ajustar CommandTimeout en Dapper.NET?

.net c# dapper timeout

Pregunta

Estoy tratando de ejecutar copias de seguridad de SQL a través de un procedimiento almacenado a través de Dapper (el resto de mi aplicación usa Dapper, así que prefiero mantener esta porción ejecutándose a través de él también). Funciona perfectamente hasta que CommandTimeout se active.

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

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

La única configuración de CommandTimeout que conozco está en SqlCommand. ¿Hay alguna manera de configurar esto a través de Dapper?

Respuesta aceptada

Sí, hay múltiples versiones de la función Ejecutar. Uno (o más) de ellos contiene los parámetros commandTimeout:

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

Tomado de SqlMapper.cs


Respuesta popular

Ejemplo de pregunta original con respuesta aceptada, en caso de que alguien lo quiera. (El tiempo de espera se establece en 60 segundos):

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué