Le regroupement de connexions fourni par ODP.NET est complètement opaque. C'est-à-dire qu'il n'y a pas de fuite comme je le voudrais - il n'y a aucun moyen de savoir si une connexion a déjà été utilisée ou si elle est neuve. Cependant, il s'agit d'une abstraction qui fuit d'une autre manière :tout état de session (par exemple, les variables de portée de package, qui sont de portée de session) est préservé entre les utilisations de la connexion. Puisqu'il s'agit de déterminer l'état utilisé par rapport au nouvel état d'une connexion sans passer par la base de données , la réponse est que cela ne peut tout simplement pas être fait en utilisant le pool de connexions intégré d'ODP.NET.
Cela laisse deux options :
- Créer une implémentation de pool de connexions qui fournit ces informations ou effectue une initialisation définie par l'utilisateur lors de la création de chaque nouvelle connexion ; ou
- Effectuez un aller-retour vers la base de données pour déterminer l'état utilisé ou neuf de la connexion.