我有一个问题 – 是否可以使用using(块和TransactionScope,在sql server上执行多个非查询,并在一个失败时回滚所有存储过程)在C#端创建逻辑?约束:我无法创建更大的存储过程来执行TSQL事务中的其他存储过程.– 存储...

我有一个问题 – 是否可以使用using(块和TransactionScope,在sql server上执行多个非查询,并在一个失败时回滚所有存储过程)在C#端创建逻辑?
约束:我无法创建更大的存储过程来执行TSQL事务中的其他存储过程.
– 存储过程中没有’commit’,只返回0;在末尾.
这是否意味着如果事务失败/超时/我没有点击transaction.Complete(),它们能够自动回滚?我是否需要将ROLLBACK插入到此功能的存储过程中?
我努力寻找,但我无法找到这个有点独特的问题的确切答案.感谢您的时间.如果有人有任何可能的测试让我执行尝试,我会更愿意.
解决方法:
是的,TransactionScope被ADO.NET选中.如果你捕获任何异常并调用.Rollback(),一切都将被回滚.
它的工作方式有很好的细节(例如MSDTC可以参与其中),但你所建议的是完全有效的,并且是你想要实现的正确方法.
同样适用于Oracle和支持TransactionScope的其他DB.您还可以通过WCF服务传递事务,如果使用更多数据库,则它们将成为事务的一部分,依此类推.
通过一些低级工作,您甚至可以在事务中包含NTFS操作.对于NTFS,Windows API支持它,但不支持没有包装器的.NET.
本文标题为:C#中的TransactionScope可以触发SQL Server中存储过程的回滚吗?


基础教程推荐
- C# 通过反射获取类型的字段值及给字段赋值的操作 2023-03-28
- C#winform中数据库绑定DataGrid的实现 2023-06-08
- C#使用TextBox作数据输入方法 2023-04-21
- c#生成自定义图片方法代码实例 2022-12-31
- .net core 3.1 第三课 使用IOC 2023-09-27
- C#-WinForm跨线程修改UI界面的示例 2023-03-28
- C#中类与接口的区别讲解 2023-06-04
- 深入浅析c#静态多态性与动态多态性 2022-12-31
- C# 可空类型的具体使用 2023-02-08
- c#实现从字符串数组中把数字的元素找出来 2022-12-01