Tengo mi lógica de negocio implementada en clases estáticas simples con métodos estáticos. Cada uno de estos métodos se abre/cierra la conexión de SQL cuando se le llama:"abrir/cerrar" SqlConnection o mantener abierto?
public static void AddSomething(string something)
{
using (SqlConnection connection = new SqlConnection("..."))
{
connection.Open();
// ...
connection.Close();
}
}
pero creo evitando la apertura y el cierre de una conexión ahorra rendimiento. Hice algunas pruebas muuuucho tiempo atrás con OleDbConnection clase (no estoy seguro sobre el SqlConnection), y que sin duda ayudó a trabajar así (por lo que yo recuerdo):
//pass the connection object into the method
public static void AddSomething(string something, SqlConnection connection)
{
bool openConn = (connection.State == ConnectionState.Open);
if (!openConn)
{
connection.Open();
}
// ....
if (openConn)
{
connection.Close();
}
}
Así que la pregunta es - debería elegir el método (a) o el método (b)? Leí en otra pregunta stackoverflow que la conexión agrupa el rendimiento guardado para mí, no tengo que molestar en absoluto ...
PS. Es una aplicación ASP.NET: las conexiones existen solo durante una solicitud web. No es una aplicación o servicio win.
Solo un consejo: utilice el evento 'DbConnection.StateChange' para controlar los cambios en el cambio de estado de la conexión (y se pueden almacenar localmente) en lugar de verificar directamente la propiedad' DbConnection.State'. Le ahorrará costos de rendimiento. – decyclone
Un detalle que falta es cómo este método es parte de una solicitud de página. ¿Es el único método llamado o es, como asumí en mi respuesta, uno de los muchos métodos que se llama en un pedido de página, afecta a cuál respuesta es correcta;) –
David - MUCHOS métodos como este se llaman :) – Alex