Я пытаюсь создать зависимые транзакции в Entity Framework Core (v. 2.1).
Идея состоит в том, чтобы создать "дочерние" транзакции внутри "родительской" транзакции.
Если один из детей потерпит неудачу, значит, будет и отец.
Я пробовал с TransactionScope
, но у меня появляется следующая ошибка.
Предупреждение как исключение ошибки для предупреждения «Microsoft.EntityFrameworkCore.Database.Transaction.AmbientTransactionWarning»: обнаружена внешняя транзакция.Entity Framework Core не поддерживает внешние транзакции.См. http://go.microsoft.com/fwlink/?LinkId=800142. Чтобы подавить это исключение, используйте API DbContextOptionsBuilder.ConfigureWarnings.ConfigureWarnings можно использовать при переопределении метода DbContext.OnConfiguring или использовании AddDbContext в поставщике службы приложений.
Следующие методы являются методами контроллера, dbcontext создается и инициализируется в конструкторе контроллера
Вот мой код:
public bool father()
{
using (var transaction = new TransactionScope(TransactionScopeOption.Required))
{
try
{
//Do Stuff with the dbcontext
//(read, as "var x1 = _dbcontext.Database.Table1; etc...")...
child();
transaction.Complete();
//Do Stuff...
}
catch
{
//Do Stuff...
transaction.Dispose();
//Do Stuff...
}
}
}
}
public bool child()
{
using (var transaction2 = new TransactionScope(TransactionScopeOption.Required))
{
try
{
//Do other stuff with the dbcontext
//(read, as "var x2 = _dbcontext.Database.Table2; etc...")...
transaction2.Complete();
//Do Stuff...
}
catch
{
//Do Stuff...
transaction2.Dispose();
//Do Stuff...
}
}
}
}
Как я могу заставить его работать?