From 3d499d51b96e43e8772be22058f10b46bd38a5b8 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 2 Jun 2023 13:43:28 +0800 Subject: [PATCH] Add `IOpenIddictDbConcurrencyExceptionHandler` https://github.com/abpframework/abp/issues/15530 Reset the state of the entity to prevents future calls to `SaveChangesAsync()` from failing. --- .../Abp/OpenIddict/AbpOpenIddictStoreBase.cs | 4 +++- .../AbpOpenIddictApplicationStore.cs | 7 ++++-- .../AbpOpenIddictAuthorizationStore.cs | 7 ++++-- ...OpenIddictDbConcurrencyExceptionHandler.cs | 9 +++++++ .../Scopes/AbpOpenIddictScopeStore.cs | 7 ++++-- .../Tokens/AbpOpenIddictTokenStore.cs | 7 ++++-- ...OpenIddictDbConcurrencyExceptionHandler.cs | 24 +++++++++++++++++++ ...OpenIddictDbConcurrencyExceptionHandler.cs | 13 ++++++++++ 8 files changed, 69 insertions(+), 9 deletions(-) create mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/IOpenIddictDbConcurrencyExceptionHandler.cs create mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/EfCoreOpenIddictDbConcurrencyExceptionHandler.cs create mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/MongoOpenIddictDbConcurrencyExceptionHandler.cs diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictStoreBase.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictStoreBase.cs index 29254b8a00..784e07f7cf 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictStoreBase.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictStoreBase.cs @@ -21,13 +21,15 @@ public abstract class AbpOpenIddictStoreBase protected IUnitOfWorkManager UnitOfWorkManager { get; } protected IGuidGenerator GuidGenerator { get; } protected AbpOpenIddictIdentifierConverter IdentifierConverter { get; } + protected IOpenIddictDbConcurrencyExceptionHandler ConcurrencyExceptionHandler { get; } - protected AbpOpenIddictStoreBase(TRepository repository, IUnitOfWorkManager unitOfWorkManager, IGuidGenerator guidGenerator, AbpOpenIddictIdentifierConverter identifierConverter) + protected AbpOpenIddictStoreBase(TRepository repository, IUnitOfWorkManager unitOfWorkManager, IGuidGenerator guidGenerator, AbpOpenIddictIdentifierConverter identifierConverter, IOpenIddictDbConcurrencyExceptionHandler concurrencyExceptionHandler) { Repository = repository; UnitOfWorkManager = unitOfWorkManager; GuidGenerator = guidGenerator; IdentifierConverter = identifierConverter; + ConcurrencyExceptionHandler = concurrencyExceptionHandler; Logger = NullLogger>.Instance; } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore.cs index b550cd5716..3ff6f112ac 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore.cs @@ -26,8 +26,9 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase