Несколько 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 тоже?
Ответы
Ответ 1
Все изменения будут отменены, а не только одна из последних SubmitChanges().
Вам часто понадобится использовать этот шаблон, когда у вас есть данные, зависящие от других данных - например, если вам нужно создать объект и получить его автоматически сгенерированный идентификатор, чтобы сделать что-то еще (хотя L2SQL поддерживает это с помощью одного SubmitChanges вызывает большинство сценариев, просто создавая объект, но меня отвлекает...).