Я хотел бы знать, как работать с вложенными транзакциями, например, между одним началом и фиксацией у меня есть другая начало и фиксация.Причина, по которой я вас спрашиваю, заключается в том, что в моем проекте ApplicationServices у меня есть службы, которые зависят от других служб.И метод родительской службы начинает транзакцию, и в зависимости от некоторой логики ему может потребоваться вызвать один из методов зависимых дочерних служб, которые также в свою очередь выполняют begin и commit.Метод дочерних служб также используется независимо от контроллеров, поэтому я должен использовать начало и фиксацию в дочерних службах.
Короче говоря, в итоге у меня будет что-то подобное
using( Repository1.DbContext.BeginTransaction() )
{
try
{
.....
.....
using( Repository2.DbContext.BeginTransaction() )
{
try
{
.....
.....
Repository2.DbContext.CommitTransaction()
}
catch
{
Repository2.DbContext.RollBack();
throw;
}
}
Repository1.DbContext.CommitTransaction()
}
catch
{
Repository1.DbContext.RollBack();
throw;
}
}
Итак, есть вложенные начала и коммиты.Я хотел бы знать
- каково будет поведение, когда вложенный репозиторий2 будет успешно зафиксирован, но родительский репозиторий1 откатан?
Как я могу контролировать это поведение в коде, например
-Если я не хочу делать дочернюю транзакцию частью родительской транзакции.- как выяснить, выполняется ли уже транзакция перед созданием дочерней транзакции
или есть ли другое элегантное решение этой проблемы?
Спасибо Набил