Pero por otro lado, soy precavido al abrir y cerrar conexiones con demasiada frecuencia. Esto es mucho más económico con la agrupación de conexiones que sin él, pero incluso con la agrupación, el administrador de la agrupación puede decidir aumentar o reducir el grupo, convirtiéndolo nuevamente en una operación costosa.
Mi regla general es abrir una conexión cuando el usuario inicia alguna acción, hace el trabajo, luego cierra la conexión antes de esperar la siguiente entrada del usuario. Para cualquier botón de "Actualizar" dado, haga clic o lo que sea, generalmente tendré solo una conexión. Pero definitivamente no desea mantener las conexiones abiertas mientras espera la entrada del usuario si puede ayudarlo por todas las razones que otros han mencionado. Literalmente, podría esperar durante días antes de que el usuario presione otra tecla o toque otro botón. ¿Qué sucede si deja su computadora encendida y se va de vacaciones? Atascar un recurso por cantidades de tiempo impredecibles como esa es una mala noticia. En la mayoría de los casos, el tiempo transcurrido esperando la entrada del usuario excederá con creces el tiempo de trabajo real.
Creo que esto también debería interesarle: http://valueinjecter.codeplex.com/wikipage?title=Data%20access%20layer%20%28ORM%29%20with%20the%20Value%20Injecter&referringTitle=Home – Omu