美文网首页
将一大坨的事务代码简化成2行代码

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

作者: 小狼在IT | 来源:发表于2018-05-12 10:19 被阅读0次

    在使用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<System.Data.SqlClient.SqlTransaction> 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行代码

          本文链接:https://www.haomeiwen.com/subject/nbycdftx.html