如果一个失败时如何回滚3个语句?
在C#中,我在一个将数据插入数据库的方法中有三条语句。第一条语句插入,我从中得到一个ID。这个ID在接下来的两个语句中使用。如果一个失败时如何回滚3个语句?
我有两个问题需要处理:
1)如果某些输入条件得不到满足第二条语句可以返回false。在这种情况下,我想回滚第一条语句。
2.)如果其中任何一个语句产生错误,它们应该全部回滚。
我想将所有三个语句都包含在一个事务范围中,但它只会回滚异常,这只会覆盖第二种情况。处理这两种情况的最佳方式是什么?
我通过使用DBML用的DataContext LINQ 2 SQL
用的TransactionScope()需要调用完成()方法来提交更改。 不然,所有待处理的更改将回滚,因此您的(1)也被覆盖了
看看我发布的链接。它很简单的手动回滚事务
How to Commit and Rollback Transaction in .NET
它的JIST是,你有你的交易对象后,就可以调用它的RollBack()
。
对LINQ到SQL看看How to: Bracket Data Submissions by Using Transactions (LINQ to SQL)
这看起来不错,但我没有使用ADO.NET。我通过DBML和LINQ 2 SQL使用DataContext。 – 4thSpace
在我的答案底部添加了linq2sql的链接 –
错误链接404如何在.NET中提交和回滚事务 –
我不知道c#SQL,但在mysql中有一种方法可以毫无例外地回滚事务 – Dani
为什么你认为它只是异常回滚?你必须明确提交。你知道在什么情况下你不想提交。 dot dot dot –
这三个语句中的每一个都是提交的方法。 – 4thSpace