📄 transaction.cs
字号:
using System;
using System.Data;
using System.Data.SqlClient;
namespace DAL.SqlServer
{
public class Connection : IConnection,IDisposable
{
private IDbConnection connection;
private IDbTransaction transaction;
private IDbCommand command;
private bool disposed = false;
#region IConnection接口实现
public IDbCommand Command
{
get { return command; }
}
//打开连接并启用事务
public void Open()
{
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
connection = new System.Data.SqlClient.SqlConnection(connectionString);
connection.Open();
command = connection.CreateCommand();
transaction = connection.BeginTransaction();
command.Transaction = transaction;
}
//打开连接,并由参数指定是否启用事务
public void Open(bool useTransaction)
{
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
connection = new System.Data.SqlClient.SqlConnection(connectionString);
connection.Open();
command = connection.CreateCommand();
if (useTransaction)
{
transaction = connection.BeginTransaction();
command.Transaction = transaction;
}
}
//关闭连接
public void Close()
{
connection.Dispose();
}
//回滚
public void Rollback()
{
transaction.Rollback();
}
//提交
public void Commit()
{
transaction.Commit();
}
#endregion
#region IDisposable接口实现
// 实现IDisposable接口
public void Dispose()
{
Dispose(true);
// 通知垃圾收集器将自己回收
GC.SuppressFinalize(this);
}
// Dispose(bool disposing) 在两种场景下调用,
// 如果disposing等于true,通过用户代码调用
// 如果disposing等于false,运行时在调用finalizer时调用
private void Dispose(bool disposing)
{
//如果Disposed等于true,表示已被调用过
if(!this.disposed)
{
// 如果disposing等于true,释放所有托管和非托管资源
if(disposing)
{
command.Dispose();
connection.Dispose();
}
}
disposed = true;
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -