Merge pull request #9353 from abpframework/maliming/MultiTenantConnectionStringResolver

Check IsUsedByTenants when use mapped database connection string.
pull/9371/head
Halil İbrahim Kalkan 4 years ago committed by GitHub
commit 08979d2f3f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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
}
}
}
}
}

@ -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<AbpDefaultTenantStoreOptions>(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");
}
}
}

Loading…
Cancel
Save