diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs index 02e6a108ef..2842904bca 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs @@ -41,7 +41,11 @@ namespace Volo.Abp.AspNetCore.Mvc.Uow if (unitOfWorkManager.TryBeginReserved(UnitOfWork.UnitOfWorkReservationName, options)) { var result = await next(); - if (!Succeed(result)) + if (Succeed(result)) + { + await SaveChangesAsync(context, unitOfWorkManager); + } + else { await RollbackAsync(context, unitOfWorkManager); } @@ -88,6 +92,15 @@ namespace Volo.Abp.AspNetCore.Mvc.Uow await currentUow.RollbackAsync(context.HttpContext.RequestAborted); } } + + private async Task SaveChangesAsync(ActionExecutingContext context, IUnitOfWorkManager unitOfWorkManager) + { + var currentUow = unitOfWorkManager.Current; + if (currentUow != null) + { + await currentUow.SaveChangesAsync(context.HttpContext.RequestAborted); + } + } private static bool Succeed(ActionExecutedContext result) { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs index d808053592..f2487b0ba2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs @@ -47,7 +47,11 @@ namespace Volo.Abp.AspNetCore.Mvc.Uow if (unitOfWorkManager.TryBeginReserved(UnitOfWork.UnitOfWorkReservationName, options)) { var result = await next(); - if (!Succeed(result)) + if (Succeed(result)) + { + await SaveChangesAsync(context, unitOfWorkManager); + } + else { await RollbackAsync(context, unitOfWorkManager); } @@ -94,6 +98,15 @@ namespace Volo.Abp.AspNetCore.Mvc.Uow await currentUow.RollbackAsync(context.HttpContext.RequestAborted); } } + + private async Task SaveChangesAsync(PageHandlerExecutingContext context, IUnitOfWorkManager unitOfWorkManager) + { + var currentUow = unitOfWorkManager.Current; + if (currentUow != null) + { + await currentUow.SaveChangesAsync(context.HttpContext.RequestAborted); + } + } private static bool Succeed(PageHandlerExecutedContext result) { diff --git a/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkInterceptor.cs b/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkInterceptor.cs index 3d8654adb0..56d8c51bad 100644 --- a/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkInterceptor.cs +++ b/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkInterceptor.cs @@ -35,6 +35,12 @@ namespace Volo.Abp.Uow if (unitOfWorkManager.TryBeginReserved(UnitOfWork.UnitOfWorkReservationName, options)) { await invocation.ProceedAsync(); + + if (unitOfWorkManager.Current != null) + { + await unitOfWorkManager.Current.SaveChangesAsync(); + } + return; }