O pool de conexões fornecido pelo ODP.NET é completamente opaco. Ou seja, não está vazando da maneira que eu gostaria que estivesse - não há como saber se uma conexão foi usada antes ou é nova. No entanto, é uma abstração com vazamento de outra maneira:qualquer estado de sessão (por exemplo, variáveis com escopo de pacote, que são com escopo de sessão) é preservado entre os usos da conexão. Como esta é uma pergunta sobre como determinar o estado usado versus novo de uma conexão sem acessar o banco de dados , a resposta é que isso simplesmente não pode ser feito usando o pool de conexão interno do ODP.NET.
Isso deixa duas opções:
- Crie uma implementação de pool de conexões que forneça essas informações ou execute a inicialização definida pelo usuário na criação de cada nova conexão; ou
- Faça uma viagem de ida e volta ao banco de dados para determinar o estado usado x novo da conexão.