la forma de aplicar el patrón UnitOfWork cuando se utiliza subsónica 2.1 (patrón Repositorio)?
-
04-10-2019 - |
Pregunta
Estoy utilizando el patrón de repositorio subsónica (2.1) para asp.net mvc application.In mi solicitud, hay muchos repositorios como categoryRepository, Blogrepository etc.Inside cada uno de este repositorio Estoy llamando DB.Select().From()...ExecuteReader()
de subsónica y administración de dominio a continuación, cargar objetos de aquellos lector.
En la acción del controlador i hacer múltiples llamadas de estos repositorios para por ejemplo.
List<IBlog> blogs=_blogRepository.GetHottestBlogs();
List<ICategory> categories=_categoryRepository.GetAll();
¿Tengo que poner en práctica cualquier patrón UnitOfWork para esto? .Mi duda es que la forma en subsónica realiza cada operación DB.Update / Insertar / Seleccionar .IS un TransactionScope
es suficiente para la actualización por lotes o tengo que usar SharedDbConnectionScope
a mejorar rendimiento?
Solución
Con SubSonic usted tiene que combinar TransactionScope y SharedDbConnectionScope. De lo contrario, cada comando utilizará su propia conexión dedicada que está dispuesta después de la ejecución, lo que conducirá a cometer un implícito (por lo menos para MySQL y SQL Server creo).
Cada SubSonic consulta dentro de un SharedDbConnectionScope compartirán la misma conexión, por lo que puede utilizar el TransactioScope.
Y usted tiene que utilizar el SharedDbConnectionScope antes de la TransactionScope, de lo contrario algunos proveedores no van a detectar que se está ejecutando una transacción.
using (new SharedDbConnectionScope())
{
using (TransactionScope ts = new TransactionScope()
{
// Do some sh*i ;)
ts.Complete();
}
}