Сила TransactionScope
заключается в том, что он автоматически перехватывает все, что находится внутри него, вниз по стеку вызовов (если нет другого TransactionScope
с RequiresNew
или Supress
).Если это не то, что вам нужно, вы должны использовать другой механизм для обработки транзакций.
Один из способов - открыть SqlConnection
и вызвать BeginTransaction
, чтобы получить транзакцию, а затем использовать это соединение с БД при созданииконтекст данных.(Возможно, вам придется установить правильность транзакции в контексте данных, я не уверен).
В приведенном выше примере использование TransactionScope
полностью избыточно.Существует только один вызов функции, который фактически изменяет базу данных: SubmitChanges
, и он всегда создает свою собственную транзакцию, если она еще не существует.Причина в том, что когда вы выполняете несколько операций, SubmitChanges
должен либо преуспеть в них всех, либо провалить все.Если вам нужна целостность транзакций только для одного вызова SubmitChanges
для одного контекста данных, вы можете просто удалить TransactionScope
.