Dapper.NET Connection / Query Best Practice

.net asp.net c# dapper sql-server

Question

J'ai donc lu un tas de questions sur les liens / SO, mais je n'ai toujours pas de réponse claire à cela.

Lors de l'exécution de requêtes SQL avec Dapper dans une application ASP.NET, quelle est la meilleure pratique pour ouvrir / fermer des connexions?

Voici le schéma que je suis en train de suivre:

using (var db = new SqlConnection(_connectionString))
{
    return db.Query("dbo.SomeQuery");
}

Essentiellement, ouvrez / fermez une connexion SQL chaque fois que nécessaire.

D'après ce que je comprends, le code ci-dessus devrait automatiquement ouvrir / fermer la connexion SQL (par exemple, je n'ai pas besoin d' db.Open explicitement db.Open ou db.Close ).

Le problème que je vois, c'est qu'après un certain temps, je reçois un tas de ces erreurs:

InvalidOperationExceptionTimeout a expiré. Le délai d'attente s'est écoulé avant d'obtenir une connexion du pool. Cela peut être dû au fait que toutes les connexions regroupées étaient en cours d'utilisation et que la taille maximale du pool a été atteinte.

J'ai eu une trace de profileur SQL pendant cette période, et je ne vois pas de longues requêtes qui bloqueraient quoi que ce soit, il semble donc que mon application Web ASP.NET manque de connexions (par opposition à prendre trop de temps pour exécuter une requête).

Quelqu'un peut-il me dire ce que je fais mal?

Remarque: mon application s'exécute en tant qu'application Web Azure. Je ne peux donc malheureusement pas voir combien de connexions sont ouvertes par l'application Web. :(

Réponse populaire

De mon avis en utilisant la déclaration fermant votre connexion mais vous dites explicitement ouvrir une connexion quelque chose comme ceci:

using (var db = new SqlConnection(_connectionString))

{
       db.open();

    return db.Query("dbo.SomeQuery");
}


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