Si los métodos/funciones que voy a llamar implican la necesidad de una SqlConnection abierta, abriré esto en el método que llama a la función. Por ejemplo:¿Es mejor pasar una SqlConnection abierta como parámetro, o llamar a una nueva en cada método?
protected static void btnSubmit(){
conn.Open();
myMethod(someParam, conn);
conn.Close();
}
protected static void myMethod(object someParam, SqlConnection conn){
//Some SQL commands etc here..
}
hago esto para que yo:
- Sólo alguna vez se abren y cierran 1 SqlConnection por proceso
Sin embargo, sería mejor para estructurar mi código como tal :
protected static void btnSubmit(){
myMethod(someParam);
}
protected static void myMethod(object someParam){
SqlConnection conn = New SqlConnection(".....");
conn.Open();
//Some SQL commands etc here..
conn.Close();
}
La ventaja que veo al estructurarlo de esta manera es:
- no tengo para pasar un parámetro adicional para cada método
- Si después de la línea del método ya no tiene un comando SQL, no es un parámetro no utilizado se llama cada vez que
La desventaja que veo a esto, es:
- Si
myMethod
es un método iterativo y, a continuación, cuando se llama a sí mismo que va a ser la apertura de otraSqlConnection
, y así sucesivamente, y así sucesivamente .. - Si
btnSubmit
llama a varios métodos que requieren una SqlConnection, cada uno abrirá y cerrará una nueva conexión.
¿Cuál es la mejor manera de hacerlo, y cuál es la más comúnmente practicada?
Entonces, si abro 100 objetos SqlConnection diferentes, todos para la misma base de datos/inicio de sesión, ¿esto no está poniendo más presión en el procesamiento? – Curt
Saludos por los detalles adicionales. Entonces, es una buena práctica poner mi declaración 'using' en' myMethod' (usando mi ejemplo) Siempre lo he evitado, por motivos de rendimiento, pero si no hace ninguna diferencia, ¡será más nítido! – Curt
Si no lo crees, haz una prueba y pruébalo :) Verás que no hay diferencia (al menos no se nota). Hay una propiedad en el grupo de conexiones que dice cuál es el tamaño máximo de la agrupación (creo que 100 es un valor predeterminado), eche un vistazo aquí: http://msdn.microsoft.com/en-us/library/8xx3tyca(v= vs.71) .aspx dentro de "Control de agrupación de conexiones con palabras clave de cadena de conexión" sección –