Ich versuche, SQL-Sicherungen über eine gespeicherte Prozedur über Dapper auszuführen (der Rest meiner App verwendet Dapper, daher möchte ich, dass dieser Teil auch weiterhin ausgeführt wird). Es funktioniert einwandfrei, bis CommandTimeout aktiviert wird.
using (var c = SqlConnection(connstring))
{
c.Open();
var p = new DynamicParameters();
// fill out p
c.Execute("xp_backup_database", p, commandType: CommandType.StoredProcedure);
}
Die einzige mir bekannte CommandTimeout-Einstellung ist in SqlCommand. Gibt es eine Möglichkeit, dies über Dapper einzustellen?
Antworten:
Ja, es gibt mehrere Versionen der Execute-Funktion. Einer (oder mehrere) davon enthält die commandTimeout-Parameter:
Entnommen aus SqlMapper.cs
quelle
SqlConnection.ConnectionTimeout Property
aber es heißt, dass es schreibgeschützt ist. Ich würde es für einige benutzerdefinierte Migrationsprogramme benötigen. Es ist mühsam, es mit jeder Aussage zu tippen.Beispiel aus der ursprünglichen Frage mit akzeptierter Antwort hinzugefügt, falls jemand dies wünscht. (Timeout ist auf 60 Sekunden eingestellt):
quelle
Es ist nicht erforderlich, das Verbindungszeitlimit für alle Abfragen / Datenbankanrufe festzulegen. Sie können global wie unten festlegen.
Sie können diese statische Eigenschaft beim Laden der Anwendung oder im Datenbankklassenkonstruktor initialisieren.
Dies hilft beim Entfernen von Duplikaten. Wenn Sie diese später ändern möchten, ändern Sie sie einmal.
quelle
Ich konnte mein Problem mithilfe von connection.Query lösen und das Timeout direkt einstellen
quelle