Я знаю EF 6 DbContextTransaction, но у меня плохой опыт работы с ней вложенной транзакцией.Как создать вложенные транзакции в Entity Framework с помощью TransactionScope?
Теперь я пытаюсь использовать TransactionScope только для вложенных транзакций, но также имеет проблемы.
Этот код включает 3 изменения таблиц.
Когда во внутреннем trx dbTrx2 возникло исключение, он перепутал dbTrx1, поскольку dataChg3.SaveChanges() не удался.
using (var dbTrx1 = new System.Transactions.TransactionScope())
{
...
dataChg1.....
foreach(var dataChg2 in listOfDataChg2)
{
...
try
{
using (var dbTrx2 = new System.Transactions.TransactionScope())
{
...
dbTrx2.Complete();
}
}
catch(Exception ex)
{
...
// when ex occured in dbTrx2, it messed up dbTrx1
}
...
}
dataChg3.SaveChanges(); // <- error - The operation is not valid for the state of the transaction
...
dbTrx1.Complete();
}
Кто-нибудь когда-либо тренировал надлежащую вложенную транзакцию с использованием структуры сущностей?