2010-09-16 4 views
2

Quelle est la différence entre l'utilisationImportance de l'utilisation TransactionScope

using (var scope = new TransactionScope(TransactionScopeOption.Required)) 
     { 
     using (ISession session = NHibernateHelper.OpenSession()) 
     { 
      using (ITransaction transaction = session.BeginTransaction()) 
      { 
       session.Delete(entity); 
       transaction.Commit(); 
      } 
     } 
     scope.Complete(); 
     } 

et simplement à l'aide?

using (ISession session = NHibernateHelper.OpenSession()) 
     { 
      using (ITransaction transaction = session.BeginTransaction()) 
      { 
       session.Delete(entity); 
       transaction.Commit(); 
      } 
     } 

Quels sont les avantages et les inconvénients et quand sont appropriés à l'utilisation?

Répondre

0

Puisque vous utilisez à la fois TransactonScope et transaction NHibernate vous avez une sorte de logique dupliquée. Si vous souhaitez utiliser une transaction SQL simple, vous devez utiliser la transaction NHibernate.

TransactionScope class est conçu pour utiliser dans tout scénario de transaction générale. Par exemple, il est utilisé dans EntityFramework. Lorsque vous utilisez NHibernate, vous n'en avez pas besoin, mais cela devient très utile lorsque vous avez besoin de implement custom transaction mechanism.

+0

Ce n'est pas correct. TransactionScope est de gérer une transaction distribuée, NH ITransaction est de gérer la transaction NH et est toujours nécessaire. –

+0

S'il vous plaît clarifier votre commentaire pour me permettre de corriger ma réponse. Qu'est-ce qui n'est pas correct? – Restuta

+0

Pourrais-je suggérer de jeter un coup d'oeil au framework ncommon (http://github.com/riteshrao/ncommon) il démontre une implémentation ORM-agnostique de travail qui utilise un TransactionScope – DanP