Hace un tiempo escribí una capa ORM para mi aplicación .NET, donde todas las filas de bases de datos están representados por una subclase de DatabaseRecord
. Hay una serie de métodos como Load()
, Save()
etc. En mi implementación inicial creé una conexión con la base de datos en el constructor de DatabaseRecord
, p.sobrecarga de crear nuevo SqlConnection en C#
connection = new SqlConnection(
ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString
);
entonces yo llamo Open()
y Close()
en ese SqlConnection al principio y al final de mis métodos que acceden a la base de datos. Esto me pareció (como alguien que estaba familiarizado con la programación pero nuevo en C# y .net) la forma más eficiente de hacer las cosas: tener una conexión y abrirla/cerrarla cuando sea necesario dentro de la clase.
yo sólo he estado haciendo un poco de lectura y aunque parece que este patrón se recomienda en varios lugares:
using (var connection = new SqlConnection(...)) {
connection.Open();
// Stuff with the connection
connection.Close();
}
puedo ver por qué es deseable - la conexión se realiza de forma automática Dispose()
d incluso si el cosas que haces en el medio causa una excepción no detectada. Me preguntaba cuál es la sobrecarga para llamar al new SqlConnection()
potencialmente muchas veces como esta.
agrupación de conexiones está en así que me imagino la sobrecarga es mínima y el segundo enfoque debería ser la mejor práctica, pero sólo quería asegurarse de que mis suposiciones son correctas.
Gracias por todo el respuestas asombrosamente rápidas! – vitch