Я видел много сообщений об использовании транзакций ef6, но все SaveChanges()
находятся в одном блоке.
Я хочу использовать transaction
и вызывать несколько функций внутри блока, каждая из которых имеет SaveChanges()
, но принадлежит основному блоку transaction
.
Я уже пробовал код, подобный следующему:
using(var transaction = context.Database.BeginTransaction())
{
try
{
doSomething(); //Has SaveChanges() and also sub functions with also SaveChanges()
doSomethingElse(); //Same as before
}
catch (Exception exp)
{
transaction.Rollback();
}
transaction.Commit();
}
Что происходит, так это то, что transaction.Rollback()
вообще ничего не делает.
Я предполагаю, что внутренние функции имеют собственную область действия transaction
и не заботятся об этом. Так как я могу заставить это работать?