一、利用MS SQL数据库
MS SQL数据库提供了事务处理机制,利用T-SQL语句建立数据库存储过程,不仅实现了事务处理的要求,还提高了运行性能和速度。有一个限制就是对于业务逻辑特别复杂的事务处理起来可能不是得心应手。
加入回滚机制的事务操作如下:
CREATE PROC pTrans
AS
BEGIN
BEGIN TRANSCATION
...
IF @@error <> 0
ROLLBACK
ELSE
BEGIN
...
...
COMMIT TRANSCATION
END
END
二、利用ADO.NET事务
ADO.NET框架提供了Connection和Transcation对象进行事务处理。调用Connection对象的BeginTranscation方法开始事务,调用Transcation对象的Commit方法完成事务、Rollback方法取消事务。
优点:效率与数据库事务基本相当,方法简单。
缺点:事务在数据库连接层上,执行事务过程中需要手动维护一个连接。
SqlConnection sqlConn= new SqlConnection(ConfigurationManager.ConnectionStrings["testconn"].toString());
sqlConn.Open();
SqlTransction tran = sqlConn.BeginTranscation();
SqlComand cmd = new SqlCommand();
cmd.Connection = sqlConn;
cmd.Transcation = tran;
try
{
cmd.CommandText = "INSERT INTO [Test]([Name],[Value]) VALUES ('测试1','1')";
cmd.ExecuteNonQuery();
cmd.CommandText = "INSERT INTO [Test]([Name],[Value]) VALUES ('测试2','2')";
cmd.ExecuteNonQuery();
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
throw new Exception(ex.Message, ex);
}
finally
{
sqlConn.Close();
}
三、TranscationScope事务
.NET2.0中添加了System.Transcations的命名空间,提供了一个轻量级的事务处理框架
。可以自动提升为分布式事务,用户不用考虑是简单事务还是分布式事务。
四、EnterpriseServices事务
利用COM+实现自动处理事务,添加System.EnterpriesServices.dll,微软提供了使用方法:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;816141