2008-09-03 17 views
6

Normalmente almaceno mi conexión en web.config o en la configuración de la aplicación de mi proyecto de Visual Studio. La aplicación en la que estoy trabajando actualmente realiza muchos viajes a la base de datos, lo que significa que buscará la conexión cada vez. ¿Debería poner la conexión en la memoria caché o debería estar buscando almacenar todo el objeto SqlConnection en la memoria caché para eliminar la necesidad de abrirlos y cerrarlos todo el tiempo?¿Dónde almacena su conexión de base de datos?

actualización: Parece que el consenso es la de almacenar la cadena de conexión en un archivo de configuración y salir del almacenamiento en caché en el lado de confianza de ADO.NET

Respuesta

4

no habría almacenar en caché el objeto de conexión, que derrotará la incorporada en la agrupación de conexiones - ADO.NET se encargará de las conexiones (asumiendo que usted instancia y cerca de ellos) de manera eficiente por sí mismo .

En cuanto a la cadena de conexión en sí misma, no debería necesitar almacenarla en caché si la carga desde la conexión: el objeto del administrador de conexión en el marco .NET 2.0 carga la configuración en la memoria cuando accede por primera vez, por lo no hay repeticiones de viajes al sistema de archivos.

0

Guárdelo en un archivo de configuración. Utilice una estrategia robusta de acceso a datos proporcionada por herramientas como NHibernate o Linq a Sql.

0

Por lo que recuerdo, el contenido del archivo .config se conserva en la memoria de todos modos ... Me comunicaré con usted.

Editar: ¿Qué dice HE

1

Normalmente guardo en caché la cadena de conexión en un objeto de configuración global en mi aplicación. Este valor se carga al principio de la ejecución del programa desde donde esté almacenado: archivo, archivo cifrado, archivo de configuración, etc. ADO.NET es muy bueno para almacenar en caché objetos de conexión a la base de datos, por lo que no almacenaría en caché el objeto SqlConnection .

3

El archivo web.config se almacena en caché. Pero incluso si no fuera así, no olvide que ado.net mantiene un grupo de conexiones, no abre una nueva conexión cada vez que realiza una llamada a la base de datos.

0

Una posible solución: Almacene la cadena de conexión cifrada inicial (en Web.Config o App.Config) para un inicio de sesión permitido para ejecutar solo un procedimiento almacenado para la autenticación. Luego, cambie el inicio de sesión de forma dinámica desde valores cifrados almacenados en una tabla de configuración en db.

Cuestiones relacionadas