From f2b66e75d1e22e71f8427f48c45904633f2cde23 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 9 Jun 2021 11:07:54 +0800 Subject: [PATCH] Ignore SaveChangesAsync if the uow has been rolled back. Resolve #9263 --- framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWork.cs | 5 +++++ .../EntityFrameworkCore/Transactions/Transaction_Tests.cs | 3 +++ 2 files changed, 8 insertions(+) diff --git a/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWork.cs b/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWork.cs index 878c03d629..7b4f8fda33 100644 --- a/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWork.cs +++ b/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWork.cs @@ -89,6 +89,11 @@ namespace Volo.Abp.Uow public virtual async Task SaveChangesAsync(CancellationToken cancellationToken = default) { + if (_isRolledback) + { + return; + } + foreach (var databaseApi in GetAllActiveDatabaseApis()) { if (databaseApi is ISupportsSavingChanges) diff --git a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Transactions/Transaction_Tests.cs b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Transactions/Transaction_Tests.cs index 7d89da1a08..143aff73c0 100644 --- a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Transactions/Transaction_Tests.cs +++ b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Transactions/Transaction_Tests.cs @@ -59,6 +59,9 @@ namespace Volo.Abp.EntityFrameworkCore.Transactions await _personRepository.InsertAsync(new Person(personId, "Adam", 42)); await _unitOfWorkManager.Current.RollbackAsync(); + + //Will ignore this call. + await _unitOfWorkManager.Current.SaveChangesAsync(); }); var person = await _personRepository.FindAsync(personId);