J'essaie d'exécuter des sauvegardes SQL via une procédure stockée via Dapper (le reste de mon application utilise Dapper, donc je préférerais que cette partie soit également exécutée). Cela fonctionne très bien jusqu'à ce que le CommandTimeout entre en action.
using (var c = SqlConnection(connstring))
{
c.Open();
var p = new DynamicParameters();
// fill out p
c.Execute("xp_backup_database", p, commandType: CommandType.StoredProcedure);
}
Le seul paramètre CommandTimeout que je connaisse est dans SqlCommand. Existe-t-il un moyen de régler cela via Dapper?
Oui, il existe plusieurs versions de la fonction Exécuter. L'un (ou plusieurs) d'entre eux contient les paramètres commandTimeout:
public static int Execute(this IDbConnection cnn, string sql,
dynamic param = null, IDbTransaction transaction = null,
int? commandTimeout = null, CommandType? commandType = null)
Tiré de SqlMapper.cs
Exemple de question originale avec réponse acceptée ajoutée, au cas où quelqu'un le voudrait. (Le délai d'attente est réglé sur 60 secondes):
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);
}