我有一个问题 – 是否可以使用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中存储过程的回滚吗?
- OpenXml合并Table单元格代码实例 2023-01-27
- C#构建树形结构数据(全部构建,查找构建) 2022-11-19
- Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 2023-09-28
- c#实现哈夫曼树算法 2023-06-15
- C#强制转换和尝试转换的方法 2022-11-15
- C# 获取当前总毫秒数的实例讲解 2023-03-29
- WPF实现多运算符表达式计算器 2023-03-14
- C#实现网页画图功能 2023-02-09
- C#中类的使用教程详解 2023-06-21
- C#使用DirectX.DirectSound播放语音 2023-05-26