C#中的不同类中的多个TransactionScope

Cod*_*123 0 c# transactionscope rollback

美好的一天,我有一个方法,它在不同的类中包含几个数据库提交(大约15个),我需要一种仅在该方法未引发任何异常的情况下进行所有数据库更改的方法,我正在考虑使用事务范围,我的问题是天气,我可以在所有不同的类中使用该Transaction Scope的单个实例,如果不是,在发生异常的情况下执行回滚的最佳实践是什么?谢谢!

Evk*_*Evk 5

通常,您不需要显式执行回滚,执行数据库操作的方法甚至可能都不知道环境事务(也就是说,您不需要传递TransactionScope给它们)。做就是了:

using (var tran = new TransactionScope()) {
    FirstDatabaseOperation();
    SecondDatabaseOperation();
    // etc
    tran.Complete();
}
Run Code Online (Sandbox Code Playgroud)

如果任何操作发生异常-事务将被处理,因此TransactionScope将为您回滚事务。