2010-02-02 10 views
8

Antecedentes:
Tengo una aplicación que he separado muy bien mi lógica de interfaz de mi lógica de nivel medio que maneja las consultas a la base de datos. Hago una gran cantidad de clasificación y estrechamiento personalizados, así que no estoy usando muchos SqlDataSources y, en su lugar, estoy llamando a muchos procedimientos almacenados con SqlCommands.cuántas instancias de SqlConnection debo usar

Estoy utilizando la Autenticación de formularios para crear subdirectorios protegidos. En los archivos web.config en los directorios protegidos, tengo más cadenas de conexión que enlazan a los usuarios con roles privilegiados más altos.

Pregunta:
¿Debo compartir un objeto SqlConnection en mi nivel medio para cortar el código repetitivo, o debo crear una nueva instancia para cada operación? Una SqlConnection compartida I podría volver a crear instancias si necesito cambiar las cadenas de conexión para obtener acceso a los procedimientos almacenados protegidos. ¿Hay una mejor práctica aquí?

Respuesta

10

No se preocupe por compartir para conservar recursos. .NET lo administrará por usted, hace la agrupación de conexiones de forma predeterminada. Escriba el código para que sea claro y comprensible y deje que .NET se encargue de estos detalles.

8

Cree tantas SqlConnections como sea necesario, tal como se vive en breve como sea posible, a través de la instrucción using:

using (var connection = new SqlConnection(...)) { 
    connection.Open(); 
    ... 
} 

conexiones SQL se toman de un pool de conexiones, que gestionará automáticamente la pelea por ti.

Ver: http://msdn.microsoft.com/en-us/library/8xx3tyca(VS.80).aspx

+2

+1 a la respuesta. La sintaxis de "uso" es definitivamente el camino a seguir (creo que también se puede usar para acceder a archivos/rutas). –

+2

Claro que sí, para cualquier recurso desechable (clases que implementen IDisposable) –