Comment rendre Dapper résilient pour SqlAzure?

azure-sql-database dapper resiliency

Question

J'ai récemment découvert qu'Entity Framework est un moyen très simple de rendre les connexions résilientes dans SQL Azure. Y at-il un moyen recommandé d’accomplir la même chose dans Dapper?

Réponse acceptée

Le moyen le plus rapide de se protéger contre les problèmes de connexion en C # contre Azure est le bloc de gestion des incidents Microsoft Transient .

Par exemple, le code ci-dessous réessaye jusqu'à 3 fois avec des intervalles de 1 seconde entre chaque tentative de connexion à une base de données SQL Windows Azure:

var retryStrategy = new FixedInterval(3, TimeSpan.FromSeconds(1));

var retryPolicy = 
  new RetryPolicy<SqlDatabaseTransientErrorDetectionStrategy>(retryStrategy);

retryPolicy.ExecuteAction(() => myConnection.Open());

FixedInterval est la politique de retour, donc il va essayer d'attendre 1 seconde, réessayer, etc. jusqu'à ce qu'il soit essayé 3 fois.

SqlDatabaseTransientErrorDetectionStrategy simplement une vérification de l'exception émise, si c'est une exception de connexion qui doit être réessayée, cela indiquera à RetryPolicy d'exécuter l'action à nouveau. S'il ne s'agit pas d'une exception de connexion, l'action ne sera pas exécutée et l'exception d'origine sera générée normalement.

Quant à savoir quand vous devriez l'utiliser avec Dapper; vous pouvez réessayer en toute sécurité l'ouverture des connexions et les opérations de lecture, mais soyez attentif ou réessayez les opérations d'écriture car il existe un risque de duplication des insertions, en essayant de supprimer une ligne deux fois, etc.

Plus de détails ici , cette bibliothèque peut être trouvée en tant que paquet NuGet ici qui inclut les stratégies de détection pour Windows Azure.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi