使用TransactionScope的重要性

时间:2010-09-16 12:20:39

标签: nhibernate transactions

使用

之间有什么区别
using (var scope = new TransactionScope(TransactionScopeOption.Required))
        {
        using (ISession session = NHibernateHelper.OpenSession())
        {
            using (ITransaction transaction = session.BeginTransaction())
            {
                session.Delete(entity);
                transaction.Commit();
            }
        }
        scope.Complete();
        } 

并简单地使用?

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

有什么优点和不利之处以及什么时候适合使用?

1 个答案:

答案 0 :(得分:0)

由于您同时使用 TransactonScope NHibernate事务,因此您有某种重复的逻辑。如果要使用简单的SQL事务操作,则应使用 NHibernate事务

TransactionScope class旨在用于任何一般事务方案。例如,它在EntityFramework中使用。使用NHibernate时你不需要它,但是当你需要implement custom transaction mechanism时它非常有用。