使用Linq To SQL进行多次SubmitChanges和事务回滚

11

我正在使用TransactionScope在Linq to SQL中提交数据。我的问题是,如果我在同一个scope中使用多个SubmitChanges,在出现错误的情况下,是所有的scope都会回滚,还是只有最后一个SubmitChanges之后所做的更改会回滚?例如:

using (TransactionScope trans = new TransactionScope())
{
    using (dbDataContext db = new dbDataContext())
    {
        try
        {
            //do some insert
            db.SubmitChanges();

            //do some updates
            db.SubmitChanges();

            trans.Complete();
        }
        catch(Exception ex){}
    }
}
如果更新操作 SubmitChanges 抛出异常,那么插入操作 SubmitChanges 是否会回滚?

2
请查看这个类似的问题 - https://dev59.com/H3RB5IYBdhLWcg3wtZMV - 特别是第一个答案。 - Ralph Lavelle
1个回答

8
所有更改都将被回滚,不仅仅是最后一个SubmitChanges()的更改。
当您有依赖其他数据的数据时,通常需要使用此模式--例如,如果您需要创建一个对象并获取其自动生成的ID以执行其他操作(尽管L2SQL在大多数情况下通过创建对象支持使用一个SubmitChanges调用来完成,但我偏离了主题...)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接