Pregunta

Me gustaría saber cuál sería la mejor manera de administrar una conexión a una base de datos en asp.net.

Mi aplicación está construida usando una arquitectura N-Tier. El DAL consta de clases estáticas con métodos como

Public Shared Sub Delete( _
    ByVal connection As MyConnectionClass, _
    ByVal contact_id As Integer, _
    ByVal contact_timestamp As Date _
)

    With connection.ProcParams
        .Add(New StoredProcParam("p_contact_id", contact_id, OracleDbType.Int32))
        .Add(New StoredProcParam("p_contact_timestamp", contact_timestamp, OracleDbType.Date))
    End With

    connection.Execute("PKG_DATA_ACCESS.DeleteContact")

End Sub

El punto a tener en cuenta aquí, es que paso la conexión al DAL desde el BLL.

Aquí están los puntos que he considerado, pero ninguno de ellos me parece correcto, así que solo estoy pidiendo un consejo.

¿Debo crear las conexiones en MasterPage, almacenarlas en un objeto y luego pasarlas a mis objetos comerciales a medida que las creo (lo que estoy tratando de evitar)

¿Debería crear una conexión usando una clase estática y llamar a un método como CreateConnection en él, desde el constructor de mis objetos de negocios (Algo que me gustaría, pero no quiero tener una conexión por objeto, yo ' me gustaría que se compartiera para todas las instancias de mis objetos, pero dado que asp.net es multiproceso, una clase estática no tiene sentido almacenar conexiones)

Idealmente, la solución también debería funcionar bien en un entorno de formularios Windows Forms (por lo que no se debe almacenar ninguna conexión en la sesión y recuperarla con un método estático en una clase, para el contexto actual)

¿Fue útil?

Solución

No intente mantener la conexión en absoluto. Ejecútelo dentro de cada ámbito que lo esté utilizando. .Net administrará un grupo de conexiones para usted, ya sea en formularios de Windows o en asp.net.

Intentar mantener la conexión es un objeto de sesión o en una página maestra realmente perjudicará el rendimiento, sin mencionar que introducirá otros problemas.

Del comentario de BC:

las cadenas de conexión deben ser cadenas iguales para terminar en el mismo grupo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top