Domanda

Sto usando Pattern Repository subsonico (2.1) per asp.net mvc application.In mia domanda, ci sono molti repository come categoryRepository, Blogrepository etc.Inside ciascuno di questo repository io chiamo DB.Select().From()...ExecuteReader() di subsonica e oggetti poi il caricamento del dominio da quelli lettore.

Nel azione di controllo faccio più chiamate da questi repository per es.

List<IBlog> blogs=_blogRepository.GetHottestBlogs();

List<ICategory> categories=_categoryRepository.GetAll();

Devo realizzare qualsiasi modello unitofwork per questo? .La mia dubbio è che come subsonico esegue ogni operazione DB.Update / Insert / Select .è un TransactionScope è sufficiente per l'aggiornamento batch o fare devo usare SharedDbConnectionScope per ottenere una migliore prestazioni?

È stato utile?

Soluzione

Con SubSonic è necessario combinare TransactionScope e SharedDbConnectionScope. Altrimenti ogni comando utilizzerà il proprio collegamento dedicato che è disposto dopo l'esecuzione, che porterà ad un implicito commit (almeno per MySQL e SQL Server credo).

Ogni interrogazione SubSonic entro uno SharedDbConnectionScope condividerà la stessa connessione, in modo da poter utilizzare il TransactioScope.

E si deve utilizzare lo SharedDbConnectionScope prima della TransactionScope, altrimenti alcuni fornitori non in grado di rilevare che si sta eseguendo una transazione.

using (new SharedDbConnectionScope())
{
    using (TransactionScope ts = new TransactionScope()
    {

        // Do some sh*i ;)
        ts.Complete();
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top