閱前注意
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