From a29f3a7d4f62df0ccae26c0025ad7ad2210052fb Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 7 Sep 2021 17:27:22 +0800 Subject: [PATCH 1/3] Improve PermissionDataSeeder --- .../Abp/PermissionManagement/PermissionDataSeeder.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeeder.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeeder.cs index 6217651dc7..df4f802597 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeeder.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeeder.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Guids; @@ -32,13 +33,11 @@ namespace Volo.Abp.PermissionManagement { using (CurrentTenant.Change(tenantId)) { - foreach (var permissionName in grantedPermissions) - { - if (await PermissionGrantRepository.FindAsync(permissionName, providerName, providerKey) != null) - { - continue; - } + var names = grantedPermissions.ToArray(); + var existsPermissionGrants = (await PermissionGrantRepository.GetListAsync(names, providerName, providerKey)).Select(x => x.Name).ToList(); + foreach (var permissionName in names.Except(existsPermissionGrants)) + { await PermissionGrantRepository.InsertAsync( new PermissionGrant( GuidGenerator.Create(), From 347c8ca6396959f06e194baa89beed673500645b Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 7 Sep 2021 22:47:40 +0800 Subject: [PATCH 2/3] Update unit tests --- .../MongoDB/AbpIdentityMongoDbTestModule.cs | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs index 3399b96754..3db52f4144 100644 --- a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs +++ b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs @@ -1,8 +1,13 @@ using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; using Volo.Abp.Data; using Volo.Abp.Modularity; +using Volo.Abp.MongoDB; using Volo.Abp.Uow; using Volo.Abp.PermissionManagement.MongoDB; +using Volo.Abp.Threading; namespace Volo.Abp.Identity.MongoDB { @@ -25,5 +30,31 @@ namespace Volo.Abp.Identity.MongoDB options.ConnectionStrings.Default = connectionString; }); } + + public override void OnPreApplicationInitialization(ApplicationInitializationContext context) + { + InitializeCollections(context); + } + + private static void InitializeCollections(ApplicationInitializationContext context) + { + var dbContexts = context.ServiceProvider.GetServices(); + var connectionStringResolver = context.ServiceProvider.GetRequiredService(); + + foreach (var dbContext in dbContexts) + { + var connectionString = AsyncHelper.RunSync(()=> connectionStringResolver.ResolveAsync(ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()))); + var mongoUrl = new MongoUrl(connectionString); + var databaseName = mongoUrl.DatabaseName; + var client = new MongoClient(mongoUrl); + + if (databaseName.IsNullOrWhiteSpace()) + { + databaseName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()); + } + + (dbContext as AbpMongoDbContext)?.InitializeCollections(client.GetDatabase(databaseName)); + } + } } } From dfc474554b0bbed080290765b0fc75016ee46cf0 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 8 Sep 2021 10:01:05 +0800 Subject: [PATCH 3/3] Disable transaction for MongoDB in the unit test. --- .../MongoDB/AbpIdentityMongoDbTestModule.cs | 34 +++---------------- 1 file changed, 4 insertions(+), 30 deletions(-) diff --git a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs index 3db52f4144..1ff966f309 100644 --- a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs +++ b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs @@ -1,13 +1,8 @@ using System; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; -using MongoDB.Driver; using Volo.Abp.Data; using Volo.Abp.Modularity; -using Volo.Abp.MongoDB; -using Volo.Abp.Uow; using Volo.Abp.PermissionManagement.MongoDB; -using Volo.Abp.Threading; +using Volo.Abp.Uow; namespace Volo.Abp.Identity.MongoDB { @@ -29,32 +24,11 @@ namespace Volo.Abp.Identity.MongoDB { options.ConnectionStrings.Default = connectionString; }); - } - - public override void OnPreApplicationInitialization(ApplicationInitializationContext context) - { - InitializeCollections(context); - } - private static void InitializeCollections(ApplicationInitializationContext context) - { - var dbContexts = context.ServiceProvider.GetServices(); - var connectionStringResolver = context.ServiceProvider.GetRequiredService(); - - foreach (var dbContext in dbContexts) + Configure(options => { - var connectionString = AsyncHelper.RunSync(()=> connectionStringResolver.ResolveAsync(ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()))); - var mongoUrl = new MongoUrl(connectionString); - var databaseName = mongoUrl.DatabaseName; - var client = new MongoClient(mongoUrl); - - if (databaseName.IsNullOrWhiteSpace()) - { - databaseName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()); - } - - (dbContext as AbpMongoDbContext)?.InitializeCollections(client.GetDatabase(databaseName)); - } + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; + }); } } }