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 41ba7873ac..631646eaca 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenantConnectionStringResolver.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenantConnectionStringResolver.cs @@ -41,7 +41,7 @@ namespace Volo.Abp.MultiTenancy } var tenantDefaultConnectionString = tenant.ConnectionStrings.Default; - + //Requesting default connection string... if (connectionStringName == null || connectionStringName == ConnectionStrings.DefaultConnectionStringName) @@ -59,10 +59,10 @@ namespace Volo.Abp.MultiTenancy //Found for the tenant return connString; } - + //Fallback to the mapped database for the specific connection string var database = Options.Databases.GetMappedDatabaseOrNull(connectionStringName); - if (database != null) + if (database != null && database.IsUsedByTenants) { connString = tenant.ConnectionStrings.GetOrDefault(database.DatabaseName); if (!connString.IsNullOrWhiteSpace()) @@ -166,4 +166,4 @@ namespace Volo.Abp.MultiTenancy } } } -} \ No newline at end of file +} diff --git a/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/Data/MultiTenancy/MultiTenantConnectionStringResolver_Tests.cs b/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/Data/MultiTenancy/MultiTenantConnectionStringResolver_Tests.cs index f6af2bde72..57f13cd057 100644 --- a/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/Data/MultiTenancy/MultiTenantConnectionStringResolver_Tests.cs +++ b/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/Data/MultiTenancy/MultiTenantConnectionStringResolver_Tests.cs @@ -30,6 +30,21 @@ namespace Volo.Abp.Data.MultiTenancy { options.ConnectionStrings.Default = "default-value"; options.ConnectionStrings["db1"] = "db1-default-value"; + options.ConnectionStrings["Saas"] = "Saas-default-value"; + options.ConnectionStrings["Admin"] = "Admin-default-value"; + + options.Databases.Configure("Saas", database => + { + database.MappedConnections.Add("Saas1"); + database.MappedConnections.Add("Saas2"); + database.IsUsedByTenants = false; + }); + + options.Databases.Configure("Admin", database => + { + database.MappedConnections.Add("Admin1"); + database.MappedConnections.Add("Admin2"); + }); }); services.Configure(options => @@ -41,7 +56,8 @@ namespace Volo.Abp.Data.MultiTenancy ConnectionStrings = { { ConnectionStrings.DefaultConnectionStringName, "tenant1-default-value"}, - {"db1", "tenant1-db1-value"} + {"db1", "tenant1-db1-value"}, + {"Admin", "tenant1-Admin-value"} } }, new TenantConfiguration(_tenant2Id, "tenant2") @@ -55,12 +71,16 @@ namespace Volo.Abp.Data.MultiTenancy //No tenant in current context (await _connectionResolver.ResolveAsync()).ShouldBe("default-value"); (await _connectionResolver.ResolveAsync("db1")).ShouldBe("db1-default-value"); + (await _connectionResolver.ResolveAsync("Saas1")).ShouldBe("Saas-default-value"); + (await _connectionResolver.ResolveAsync("Admin2")).ShouldBe("Admin-default-value"); //Overriden connection strings for tenant1 using (_currentTenant.Change(_tenant1Id)) { (await _connectionResolver.ResolveAsync()).ShouldBe("tenant1-default-value"); (await _connectionResolver.ResolveAsync("db1")).ShouldBe("tenant1-db1-value"); + (await _connectionResolver.ResolveAsync("Saas1")).ShouldBe("tenant1-default-value"); + (await _connectionResolver.ResolveAsync("Admin2")).ShouldBe("tenant1-Admin-value"); } //No tenant in current context @@ -72,6 +92,8 @@ namespace Volo.Abp.Data.MultiTenancy { (await _connectionResolver.ResolveAsync()).ShouldBe("default-value"); (await _connectionResolver.ResolveAsync("db1")).ShouldBe("db1-default-value"); + (await _connectionResolver.ResolveAsync("Saas1")).ShouldBe("Saas-default-value"); + (await _connectionResolver.ResolveAsync("Admin2")).ShouldBe("Admin-default-value"); } } }