¿Debería crearse la clase de base de datos PetaPoco una vez por solicitud o cada vez que sea necesaria?

StackOverflow https://stackoverflow.com//questions/10653695

  •  11-12-2019
  •  | 
  •  

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?

¿Fue útil?

Solución

Normalmente creo uno Database por solicitud.Es un objeto liviano.Ya sea en un ActionFilter usar una Controller clase base.

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