大きなトランザクション・コードを2行のコードに簡略化

1893 ワード

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   。