程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#用Attribute實現AOP事務(1)

C#用Attribute實現AOP事務(1)

編輯:關於C語言
# 用Attribute實現AOP事務 [C# | AOP | Attribute | ContextAttribute | IContributeObjectSink | IMessageSink ]

閱前注意

1.整篇文章的核心和突破點在於上下文Context的使用,務必注意CallContext在整個程序中起到的作用

2.本文中看到的SqlHelper使用的是微軟SqlHelper.cs。

3.本文重點在於如何實現,並且已經測試通過,只貼關鍵性代碼,所以請認真閱讀,部分代碼直接拷貝下來運行是會出錯的!

正文

首先我們來看一段未加事務的代碼:

SqlDAL.cs  

public abstract class SqlDAL
    {
        #region ConnectionString
        private SqlConnectionStringBuilder _ConnectionString = null;
        /// <summary>
        /// 字符串連接
        /// </summary>
        public virtual SqlConnectionStringBuilder ConnectionString
        {
            get
            {
                if (_ConnectionString == null || string.IsNullOrEmpty(_ConnectionString.ConnectionString))
                {
                    _ConnectionString = new SqlConnectionStringBuilder(Configurations.SQLSERVER_CONNECTION_STRING);
                }
                return _ConnectionString;
            }
            set { _ConnectionString = value; }
        }
        #endregion
        #region ExecuteNonQuery
        public int ExecuteNonQuery(string cmdText)
        {
            return SqlHelper.ExecuteNonQuery(ConnectionString.ConnectionString, CommandType.Text, cmdText);
        }
        public int ExecuteNonQuery(string cmdText, CommandType type)
        {
            return SqlHelper.ExecuteNonQuery(ConnectionString.ConnectionString, type, cmdText);
        }
        public int ExecuteNonQuery(string cmdText, CommandType type, params SqlParameter[] cmdParameters)
        {
            return SqlHelper.ExecuteNonQuery(ConnectionString.ConnectionString, type, cmdText, cmdParameters);
        }
        #endregion
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved