问题描述
为什么以前在逻辑层做不了事务,因为我们在使用SqlConnection的时候,都是连接完后,马上就把SqlConnection对象关闭。而事务要求对同一个SqlConnection对象上实施,所以就做不了事务了。解决办法就是想办法告诉数据库操作类,我用了事务,不要闭连接,并把当前连接保存下来,下一次继续使用。
解决方案
解决方案二:
我写了一个事务容器类/**////<summary>///TransactionScope包装类///</summary>publicsealedclassTransactionScopeA:IDisposable{privateTransactionScopem_TransactionScope=null;privateSqlConnection_connection=null;publicSqlConnectionGetConnection{set{_connection=value;}get{return_connection;}}/**////<summary>///实例化一个新的TransactionScope///</summary>///<paramname="dac"></param>publicTransactionScopeA(){this.m_TransactionScope=newTransactionScope();}///<summary>///关闭连接///</summary>publicvoidClose(){_connection.Close();_connection.Dispose();_connection=null;}publicvoidComplete(){this.m_TransactionScope.Complete();this.Close();this.GetConnection=null;}#regionIDisposable成员/**////<summary>///当执行该方法的时候完成两件任务///1关闭数据库连接///2调用TransactionScope的Dispose()方法///</summary>voidIDisposable.Dispose(){try{Close();}finally{m_TransactionScope.Dispose();}}#endregion}