不同 类 C# 中的多个 TransactionScopes

multiple TransactionScopes in in different classes C#

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

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

using (var tran = new TransactionScope()) {
    FirstDatabaseOperation();
    SecondDatabaseOperation();
    // etc
    tran.Complete();
}

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