comment mettre en œuvre lors de l'utilisation UnitOfWork modèle subsonique 2.1 (modèle référentiel)?

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

Question

J'utilise modèle référentiel subsonique (2.1) pour asp.net mvc application.In ma demande, il y a beaucoup de dépôts comme categoryRepository, Blogrepository etc.Inside chacun de ce référentiel je fais appel domaine de DB.Select().From()...ExecuteReader() de subsonique puis charger des objets de ceux lecteur.

Dans l'action du contrôleur je fais des appels multiples à partir de ces dépôts pour par exemple.

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

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

dois-je mettre en œuvre tout motif de UnitOfWork pour cela? Doute .Mon est que la façon dont subsonique effectue chaque opération DB.Update / Insérer / Sélectionnez un .est TransactionScope est suffisant pour la mise à jour batch ou dois-je utiliser à SharedDbConnectionScope pour mieux performance?

Était-ce utile?

La solution

Avec SubSonic vous devez combiner TransactionScope et SharedDbConnectionScope. Sinon chaque commande utilisera sa propre connexion dédiée qui est disposé après l'exécution, ce qui conduira à une validation implicite (au moins pour MySQL et SQL Server je pense).

Chaque SubSonic requête dans un SharedDbConnectionScope partagera la même connexion, vous pouvez utiliser le TransactioScope.

Et vous devez utiliser le SharedDbConnectionScope avant TransactionScope, sinon certains fournisseurs ne détectent pas que vous exécutez une transaction.

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

        // Do some sh*i ;)
        ts.Complete();
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top