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