将一大坨的事务代码简化成2行代码

在使用ADO.NET时,如果自己弄事务,代码一般是这样的:

        public  void Transaction()
        {

            SqlTranHelper sqlTranHelper = new SqlTranHelper();
            try
            {
                sqlTranHelper.BeginTransaction();
                //事务操作
                sqlTranHelper.CommitTransaction();
              
            }
            catch (Exception ex)
            {
                sqlTranHelper.RollBackTransaction();
               
            }
            finally
            {
                sqlTranHelper.EndTransaction();
            }
        }

我们要在try里面的BeginTransaction与CommitTransaction之间写各式各样的事务代码。
在这个方法里,除了“事务代码”,其它多余的代码,在每个使用事务的地方,都不可避免的要重写。

于是我利用了委托,做了一个委托方法(做成静态方法):

        public static string Transaction(Action op)
        {
            string Message = "Error!";

            SqlTranHelper sqlTranHelper = new SqlTranHelper();
            try
            {
                sqlTranHelper.BeginTransaction();
                op(sqlTranHelper.Trans);
                sqlTranHelper.CommitTransaction();
                Message = "";
            }
            catch (Exception ex)
            {
                sqlTranHelper.RollBackTransaction();
                if (!string.IsNullOrEmpty(ex.Message))
                {
                    Message = ex.Message;
                }
            }
            finally
            {
                sqlTranHelper.EndTransaction();
            }
            return Message;
        }

有了这个方法,以后做“事务”,就简单了(多行代码,简化成2行了):

        string Message = SqlHelper.Transaction(tran=>{
            //在这里写事务代码
        });
        reVal = string.IsNullOrEmpty(Message);//如果事务执行出错,Message才有值。

你可能感兴趣的:(将一大坨的事务代码简化成2行代码)