C# 代码实现分布式事务

需引用using System.Transactions;

建测试表

create table t1
(
   id int
)

建测试存储过程1

create proc prc1
as
begin tran
insert into t1 values(1)
commit
go

建测试存储过程2

create proc prc2
as
raiserror('error!',16,1)
go

示例代码

Database db = DatabaseFactory.CreateDatabase(); //连接第一个数据库
Database db1 = DatabaseFactory.CreateDatabase("con1");//连接第二个数据库

using (TransactionScope scope = new TransactionScope())
            {
                try
                {
                    db.ExecuteNonQuery(CommandType.Text, "prc1");  //t1表中有一行数据
                    db1.ExecuteNonQuery(CommandType.Text, "prc2");//抛异常
                }
                catch
                {
                    return;//返回 未提交 t1表中无数据
                }
                finally
                {
                    //
                }
                scope.Complete(); //提交
            }

原文地址:https://www.cnblogs.com/biyyss_sun/p/2343417.html