首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果一条语句失败,如何回滚3条语句?

如果一条语句失败,如何回滚3条语句?
EN

Stack Overflow用户
提问于 2011-08-19 12:14:20
回答 3查看 1.3K关注 0票数 2

在C#中,我在一个将数据插入数据库的方法中有三个语句。插入第一条语句,并从中获得一个ID。此ID将在接下来的两条语句中使用。

我有两个案子要处理:

1.)如果不满足某些输入条件,则第二个语句可能返回false。在这种情况下,我想回滚第一条语句。

2.)如果这两条语句中的任何一条生成错误,它们都应该回滚。

我认为将所有三个语句都包装在一个事务作用域中,但它只会在异常时回滚,这只涵盖了第二种情况。处理这两种情况的最佳方法是什么?

我正在通过带有LINQ2SQL的DBML使用DataContext

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-19 12:24:47

使用TransactionScope(),您需要调用Complete()方法来提交更改。否则,所有挂起的更改都将被回滚,因此您的(1)也会被覆盖

票数 5
EN

Stack Overflow用户

发布于 2011-08-19 12:24:09

请看一下我发布的链接。手动回滚事务非常简单

How to Commit and Rollback Transaction in .NET

它的要点是,在拥有事务对象之后,可以对其调用RollBack()

对于Linq-To-Sql,可以看看How to: Bracket Data Submissions by Using Transactions (LINQ to SQL)

票数 1
EN

Stack Overflow用户

发布于 2011-08-19 12:22:12

您可以使用具有正确严重性级别(我认为应该这样做的18级)的RAISERROR语句来“抛出异常”,并在用户检查的条件下使事务回滚。

显然,这只会回滚同一事务范围内的所有内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7116873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档