¿Debería crearse la clase de base de datos PetaPoco una vez por solicitud o cada vez que sea necesaria?
Pregunta
Con PetaPoco, ¿cómo debo manejar la creación del Database
¿clase?Mi aplicación probablemente hará uso de varios repositorios (no exactamente el repositorio DDD, más bien un repositorio de puerta de enlace) para encapsular las consultas.
Como tendré varios repositorios que necesitan acceder a la misma conexión de base de datos, estaba pensando en crear una clase base que creara la clase Base de datos en el constructor y llamara Dispose
en su destructor, y simplemente llamar a este objeto en todas las clases derivadas, por lo que creo que no necesitaría un bloque de uso en este escenario (ya que cuando la clase sale del alcance cerrará la base de datos).
También consideré simplemente crear el objeto de base de datos en global.axax, en el Application_BeginRequest
método para que esté disponible en todas las páginas, pero no estoy del todo seguro de cómo funciona (creo que necesitaría algún tipo de DatabaseManager
clase que lo instancia?Solo he visto este enfoque usado con cosas como NHibernate y RavenDB) y eso parece impulsar el uso del objeto de base de datos a la página ASPX en lugar de a través de una clase de capa de datos/repositorio, lo que parece mal.
¿Alguna sugerencia sobre cuál de estos enfoques, si corresponde, funcionará mejor?También he visto que PetaPoco admite una "conexión compartida", entonces, ¿es algo que quiero considerar también para minimizar la cantidad de conexiones abiertas a la base de datos?
Solución
Normalmente creo uno Database
por solicitud.Es un objeto liviano.Ya sea en un ActionFilter
usar una Controller
clase base.