From 71d6318f9b68d503614fbc703781b5ff416803c6 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 11 Oct 2024 14:35:52 +0800 Subject: [PATCH] Use the logic in the `ResolveAsync` method to implement the `Resolve` method. https://abp.io/support/questions/8040/Identity-related-tables-are-not-being-generated-in-tenant-database?CurrentPage=2#answer-3a158c73-082a-b523-0eea-0dc817b46423 --- .../MultiTenantConnectionStringResolver.cs | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenantConnectionStringResolver.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenantConnectionStringResolver.cs index 6ed12a3159..1d58b94a9f 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenantConnectionStringResolver.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenantConnectionStringResolver.cs @@ -118,27 +118,25 @@ public class MultiTenantConnectionStringResolver : DefaultConnectionStringResolv return connString!; } - //Fallback to tenant's default connection string if available - if (!tenantDefaultConnectionString.IsNullOrWhiteSpace()) - { - return tenantDefaultConnectionString!; - } - - //Try to find the specific connection string for given name - var connStringInOptions = Options.ConnectionStrings.GetOrDefault(connectionStringName); - if (!connStringInOptions.IsNullOrWhiteSpace()) + //Fallback to the mapped database for the specific connection string + var database = Options.Databases.GetMappedDatabaseOrNull(connectionStringName); + if (database != null && database.IsUsedByTenants) { - return connStringInOptions!; + connString = tenant.ConnectionStrings?.GetOrDefault(database.DatabaseName); + if (!connString.IsNullOrWhiteSpace()) + { + //Found for the tenant + return connString!; + } } - //Fallback to the global default connection string - var defaultConnectionString = Options.ConnectionStrings.Default; - if (!defaultConnectionString.IsNullOrWhiteSpace()) + //Fallback to tenant's default connection string if available + if (!tenantDefaultConnectionString.IsNullOrWhiteSpace()) { - return defaultConnectionString!; + return tenantDefaultConnectionString!; } - throw new AbpException("No connection string defined!"); + return base.Resolve(connectionStringName); } protected virtual async Task FindTenantConfigurationAsync(Guid tenantId)