我有一个问题 – 是否可以使用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# 实现对PPT文档加密、解密及重置密码的操作方法 2022-11-23
- 对C# 多态的理解 2023-03-10
- C#多线程开发之任务并行库详解 2023-04-28
- C# 实现在控制台上换行输出与不换行输出 2023-04-10
- C#组件FormDragger窗体拖拽器详解 2022-11-06
- .NetCore 发布到 Centos docker 2023-09-28
- unity实现动态排行榜 2023-04-27
- C#获取Description特性的扩展类详解 2023-06-21
- C#实现冒泡排序和插入排序算法 2023-05-31
- C# Razor语法规则 2023-05-12