.net 使用Linq到SQL的多次提交更改和事务回滚

.net 使用Linq到SQL的多次提交更改和事务回滚,.net,linq-to-sql,transactionscope,.net,Linq To Sql,Transactionscope,我正在使用TransactionScope将Linq中的数据提交给SQL。我的问题是,如果我在同一个范围内使用多个SubmitChanges,是否会在发生错误时回滚所有范围,还是仅回滚上次SubmitChanges之后所做的更改?例如: using (TransactionScope trans = new TransactionScope()) { using (dbDataContext db = new dbDataContext()) { try

我正在使用TransactionScope将Linq中的数据提交给SQL。我的问题是,如果我在同一个范围内使用多个SubmitChanges,是否会在发生错误时回滚所有范围,还是仅回滚上次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){}
    }
}

如果update SubmitChanges引发异常,插入SubmitChanges是否也会回滚?

所有更改都将回滚,而不仅仅是上一次SubmitChanges()中的更改


当您有依赖于其他数据的数据时,您通常需要使用此模式——例如,如果您需要创建一个对象并获取其自动生成的ID以便执行其他操作(尽管L2SQL在大多数情况下仅通过创建对象来支持一次SubmitChanges调用,但我离题了…).

看看这个类似的问题——特别是第一个答案