事务

事务    

一个操作集合:一系列操作 要么全部成功,要么全部失败,例如:银行转账A=》B,两部分  一:提出A,二:放入B  ;要么同时成功,要么同时失败
事务管理器

 

数据参与到事务运作当中,我们把管理这些数据的工具称为资源管理器 RM,TM事务管理器   协调多个管理器的工作,保证程序正确运行

 

     事务管理器分类

核心 事物管理器KTM  
轻量级事物管理器LTM 在System.Transactions里的一个管理框架,管理单个程序域,管理多个易变的RM,但只能管理一个持久化的RM,性能最高的事物管理器
分布式事务协调器(DTC)  

       System.Transactioins.Transaction类

    

  //
        // 摘要:
        //     获取或设置环境事务。
        //
        // 返回结果:
        //     描述当前事务的 System.Transactions.Transaction。
        public static Transaction Current { get; set; }
        //
        // 摘要:
        //     获取事务的隔离级别。
        //
        // 返回结果:
        //     System.Transactions.IsolationLevel 值之一,该值指示事务的隔离级别。
        public IsolationLevel IsolationLevel { get; }
        //
        // 摘要:
        //     检索有关某个事务的附加信息。
        //
        // 返回结果:
        //     包含有关某个事务的附加信息的 System.Transactions.TransactionInformation。
        public TransactionInformation TransactionInformation { get; }

主要方法

   //
        // 摘要:
        //     指示事务已完成。
        //
        // 异常:
        //   T:System.ObjectDisposedException:
        //     尝试在已处置的事务上订阅此事件。
        public event TransactionCompletedEventHandler TransactionCompleted;

        //
        // 摘要:
        //     创建事务的克隆。
        //
        // 返回结果:
        //     一个 System.Transactions.Transaction 作为当前事务对象的副本。
  //
        // 摘要:
        //     回滚(中止)事务。
        public void Rollback();
        //
        // 摘要:
        //     回滚(中止)事务。
        //
        // 参数:
        //   e:
        //     有关发生回滚的原因的说明。
        public void Rollback(Exception e);

 

事务使用

public void Execute(string connectionString)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                SqlCommand cmd = new SqlCommand();
                SqlTransaction transaction = null;
                transaction = connection.BeginTransaction("SampleTransaction");
                cmd.Connection = connection;
                cmd.Transaction = transaction;
                try
                {
                    cmd.CommandText = "";
                    cmd.ExecuteNonQuery();
                    transaction.Commit();
                }
                catch
                {
                    transaction.Rollback();
                }


            }
        }

 

posted @ 2016-04-12 10:30  飞猪.net  阅读(214)  评论(0编辑  收藏  举报