在C#中,我在一个将数据插入数据库的方法中有三个语句。插入第一条语句,并从中获得一个ID。此ID将在接下来的两条语句中使用。
我有两个案子要处理:
1.)如果不满足某些输入条件,则第二个语句可能返回false。在这种情况下,我想回滚第一条语句。
2.)如果这两条语句中的任何一条生成错误,它们都应该回滚。
我认为将所有三个语句都包装在一个事务作用域中,但它只会在异常时回滚,这只涵盖了第二种情况。处理这两种情况的最佳方法是什么?
我正在通过带有LINQ2SQL的DBML使用DataContext
发布于 2011-08-19 12:24:47
使用TransactionScope(),您需要调用Complete()方法来提交更改。否则,所有挂起的更改都将被回滚,因此您的(1)也会被覆盖
发布于 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)。
发布于 2011-08-19 12:22:12
您可以使用具有正确严重性级别(我认为应该这样做的18级)的RAISERROR语句来“抛出异常”,并在用户检查的条件下使事务回滚。
显然,这只会回滚同一事务范围内的所有内容。
https://stackoverflow.com/questions/7116873
复制相似问题