1. 单个数据库连接
可以直接使用OracleTransaction对象做事务处理
using(var transaction = connection.BeginTransaction())
{
.....在这个作用域上的数据库操作,必须基于这个transaction
using(var command = new OracleCommand(commandText, connection) { Transaction = transaction })
{
...
}
...
transaction.Commit(); //transaction.Rollback();
}
2. 多个数据库连接
可以使用TransactionScope对象来维护多个数据库连接中的事务处理
var options = new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted, Timeout = new TimeSpan(0, 2, 0) };
using (var transaction = new TransactionScope(TransactionScopeOption.Required, options))
{
.....在这个作用域里面的数据库操作,不需要传递transaction对象
using(var connection1 = new OracleConnection(connectionString1))
{
...
}
using(var connection2 = new OracleConnection(connectionString2))
{
...
}
transaction.Complete();
}
注1: 使用TransactionScope对象前,需要添加引用System.Transaction
注2: 对于多个Oracle连接来说,使用TransactionScope对象前,需要安装Oracle Services For MTS (Microsoft Transaction Server)。下载地址:http://goo.gl/XrKn