抛砖引玉,在逻辑层实现事务,请大家指教。
时间:2011-12-28
来源:互联网
为什么以前在逻辑层做不了事务,因为我们在使用SqlConnection的时候,都是连接完后,马上就把SqlConnection对象关闭。而事务要求对同一个SqlConnection对象上实施,所以就做不了事务了。
解决办法就是想办法告诉数据库操作类,我用了事务,不要闭连接,并把当前连接保存下来,下一次继续使用。
解决办法就是想办法告诉数据库操作类,我用了事务,不要闭连接,并把当前连接保存下来,下一次继续使用。
作者: X2670316290 发布时间: 2011-12-28
我写了一个事务容器类
/**/
/// <summary>
/// TransactionScope 包装类
/// </summary>
public sealed class TransactionScopeA : IDisposable
{
private TransactionScope m_TransactionScope = null;
private SqlConnection _connection = null;
public SqlConnection GetConnection
{
set { _connection = value; }
get { return _connection; }
}
/**//// <summary>
/// 实例化一个新的 TransactionScope
/// </summary>
/// <param name= "dac "> </param>
public TransactionScopeA()
{
this.m_TransactionScope = new TransactionScope();
}
/// <summary>
/// 关闭连接
/// </summary>
public void Close()
{
_connection.Close();
_connection.Dispose();
_connection = null;
}
public void Complete()
{
this.m_TransactionScope.Complete();
this.Close();
this.GetConnection = null;
}
#region IDisposable 成员
/**/
/// <summary>
/// 当执行该方法的时候完成两件任务
/// 1 关闭数据库连接
/// 2 调用 TransactionScope 的 Dispose()方法
/// </summary>
void IDisposable.Dispose()
{
try
{
Close();
}
finally
{
m_TransactionScope.Dispose();
}
}
#endregion
}
/**/
/// <summary>
/// TransactionScope 包装类
/// </summary>
public sealed class TransactionScopeA : IDisposable
{
private TransactionScope m_TransactionScope = null;
private SqlConnection _connection = null;
public SqlConnection GetConnection
{
set { _connection = value; }
get { return _connection; }
}
/**//// <summary>
/// 实例化一个新的 TransactionScope
/// </summary>
/// <param name= "dac "> </param>
public TransactionScopeA()
{
this.m_TransactionScope = new TransactionScope();
}
/// <summary>
/// 关闭连接
/// </summary>
public void Close()
{
_connection.Close();
_connection.Dispose();
_connection = null;
}
public void Complete()
{
this.m_TransactionScope.Complete();
this.Close();
this.GetConnection = null;
}
#region IDisposable 成员
/**/
/// <summary>
/// 当执行该方法的时候完成两件任务
/// 1 关闭数据库连接
/// 2 调用 TransactionScope 的 Dispose()方法
/// </summary>
void IDisposable.Dispose()
{
try
{
Close();
}
finally
{
m_TransactionScope.Dispose();
}
}
#endregion
}
作者: X2670316290 发布时间: 2011-12-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28