Подтвердить что ты не робот

Несколько SubmitChanges и откат транзакций с использованием Linq To SQL

Я использую TransactionScope для отправки данных в Linq to 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 тоже?

4b9b3361

Ответ 1

Все изменения будут отменены, а не только одна из последних SubmitChanges().

Вам часто понадобится использовать этот шаблон, когда у вас есть данные, зависящие от других данных - например, если вам нужно создать объект и получить его автоматически сгенерированный идентификатор, чтобы сделать что-то еще (хотя L2SQL поддерживает это с помощью одного SubmitChanges вызывает большинство сценариев, просто создавая объект, но меня отвлекает...).