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

时间:2011-08-19 04:14:20

标签: c# .net linq-to-sql

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

我有两个案件要处理:

1。)如果不满足某些输入条件,则第二个语句可以返回false。在那种情况下,我想回滚第一个声明 2.)如果任何一个语句产生错误,它们都应该回滚。

我想将所有三个语句都包装在一个事务范围中,但它只会回滚异常,这只涉及第二种情况。处理这两种情况的最佳方法是什么?

我通过带有LINQ 2 SQL的DBML使用DataContext

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

How to Commit and Rollback Transaction in .NET

它的主旨是,在您拥有交易对象后,您可以在其上调用RollBack()

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

答案 2 :(得分:0)

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

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