TransactionScope代码
时间: 2023-07-03 21:26:03 浏览: 53
下面是一个简单的使用TransactionScope的代码示例,用于演示如何将多个数据库操作包装在一个事务中:
```
using System;
using System.Data.SqlClient;
using System.Transactions;
class Program
{
static void Main()
{
// 创建一个连接字符串
string connectionString = "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=TestDB;Integrated Security=True";
// 创建一个事务范围对象
using (TransactionScope scope = new TransactionScope())
{
try
{
// 执行第一个数据库操作
using (SqlConnection connection1 = new SqlConnection(connectionString))
{
connection1.Open();
SqlCommand command1 = new SqlCommand("INSERT INTO Customers (Name) VALUES ('Customer 1')", connection1);
command1.ExecuteNonQuery();
}
// 执行第二个数据库操作
using (SqlConnection connection2 = new SqlConnection(connectionString))
{
connection2.Open();
SqlCommand command2 = new SqlCommand("INSERT INTO Orders (CustomerId, OrderDate) VALUES ((SELECT TOP 1 Id FROM Customers ORDER BY Id DESC), GETDATE())", connection2);
command2.ExecuteNonQuery();
}
// 提交事务
scope.Complete();
}
catch (Exception ex)
{
// 回滚事务
Console.WriteLine("Transaction rolled back: " + ex.Message);
}
}
}
}
```
在这个示例中,我们使用了TransactionScope类来创建一个事务范围,然后在这个范围内执行了两个数据库操作。如果两个操作都成功执行,我们调用了TransactionScope的Complete方法来提交事务。如果其中任何一个操作失败,我们就会在catch块中回滚事务。