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?

¿Fue útil?

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();
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top