La réponse de Daniel a fonctionné comme prévu pour moi. Pour être complet, voici un extrait qui montre validation et d'annulation au moyen d'un champ de transaction et pimpant:
using System.Transactions;
// _sqlConnection has been opened elsewhere in preceeding code
using (var transactionScope = new TransactionScope())
{
try
{
long result = _sqlConnection.ExecuteScalar<long>(sqlString, new {Param1 = 1, Param2 = "string"});
transactionScope.Complete();
}
catch (Exception exception)
{
// Logger initialized elsewhere in code
_logger.Error(exception, $"Error encountered whilst executing SQL: {sqlString}, Message: {exception.Message}")
// re-throw to let the caller know
throw;
}
} // This is where Dispose is called
Est-il nécessaire d'annuler explicitement une erreur ou est-ce que System.Transactions la gère automatiquement? –
@NorbertNorbertson il le fait automatiquement, dans la méthode 'Dispose()'. Si 'Complete()' n'a pas été appelé, la transaction est annulée. –