diff --git a/src/Marten/Storage/MartenDatabase.cs b/src/Marten/Storage/MartenDatabase.cs index 9fa977191e..c048a03557 100644 --- a/src/Marten/Storage/MartenDatabase.cs +++ b/src/Marten/Storage/MartenDatabase.cs @@ -108,7 +108,11 @@ public override DatabaseDescriptor Describe() descriptor.SchemaOrNamespace = Options?.DatabaseSchemaName ?? "public"; } - descriptor.TenantIds.AddRange(TenantIds); + foreach (var tenantId in TenantIds) + { + descriptor.TenantIds.Fill(tenantId); + } + return descriptor; } diff --git a/src/Marten/Storage/MasterTableTenancy.cs b/src/Marten/Storage/MasterTableTenancy.cs index fa61b46188..ba668b3e7f 100644 --- a/src/Marten/Storage/MasterTableTenancy.cs +++ b/src/Marten/Storage/MasterTableTenancy.cs @@ -111,7 +111,7 @@ public async ValueTask> BuildDatabases() var database = new MartenDatabase(_options, _options.NpgsqlDataSourceFactory.Create(connectionString), tenantId); - database.TenantIds.Add(tenantId); + database.TenantIds.Fill(tenantId); _databases = _databases.AddOrUpdate(tenantId, database); } @@ -303,7 +303,7 @@ private async Task seedDatabasesAsync(NpgsqlConnection conn) { var db = new MartenDatabase(_options, _options.NpgsqlDataSourceFactory.Create(connectionString), tenantId); - db.TenantIds.Add(tenantId); + db.TenantIds.Fill(tenantId); return db; } @@ -366,7 +366,7 @@ public async ValueTask DescribeDatabasesAsync(CancellationToken t var list = _databases.Enumerate().Select(pair => { var descriptor = pair.Value.Describe(); - descriptor.TenantIds.Add(pair.Key); + descriptor.TenantIds.Fill(pair.Key); return descriptor; }).ToList(); diff --git a/src/Marten/Storage/SingleServerMultiTenancy.cs b/src/Marten/Storage/SingleServerMultiTenancy.cs index 59ae50e26f..8e08576e86 100644 --- a/src/Marten/Storage/SingleServerMultiTenancy.cs +++ b/src/Marten/Storage/SingleServerMultiTenancy.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using ImTools; using JasperFx; +using JasperFx.Core; using JasperFx.Core.Reflection; using JasperFx.Descriptors; using JasperFx.MultiTenancy; @@ -168,7 +169,9 @@ public async ValueTask> BuildDatabases() { // This just guarantees that all databases are built foreach (var tenantId in _tenantToDatabase.Values.Distinct()) + { await FindOrCreateDatabase(tenantId).ConfigureAwait(false); + } return AllDatabases(); } @@ -195,7 +198,7 @@ public async ValueTask DescribeDatabasesAsync(CancellationToken t Cardinality = DatabaseCardinality.DynamicMultiple, Databases = dict.Values.ToList() }; - foreach (var pair in _tenantToDatabase) dict[pair.Value].TenantIds.Add(pair.Key); + foreach (var pair in _tenantToDatabase) dict[pair.Value].TenantIds.Fill(pair.Key); return usage; } diff --git a/src/Marten/Storage/StaticMultiTenancy.cs b/src/Marten/Storage/StaticMultiTenancy.cs index be3b891e17..bfdfea1ba6 100644 --- a/src/Marten/Storage/StaticMultiTenancy.cs +++ b/src/Marten/Storage/StaticMultiTenancy.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using ImTools; using JasperFx; +using JasperFx.Core; using JasperFx.Descriptors; using JasperFx.MultiTenancy; using Marten.Schema; @@ -60,7 +61,7 @@ public ValueTask DescribeDatabasesAsync(CancellationToken token) foreach (var pair in _tenants.Enumerate()) { - dict[pair.Value.Database.Identifier].TenantIds.Add(pair.Key); + dict[pair.Value.Database.Identifier].TenantIds.Fill(pair.Key); } return new ValueTask(usage); @@ -200,7 +201,7 @@ public DatabaseExpression ForTenants(params string[] tenantIds) foreach (var tenantId in tenantIds) { var tenant = new Tenant(tenantId, _database); - _database.TenantIds.Add(tenantId); + _database.TenantIds.Fill(tenantId); _parent._tenants = _parent._tenants.AddOrUpdate(tenantId, tenant); } diff --git a/src/Marten/Storage/Tenant2.cs b/src/Marten/Storage/Tenant2.cs index 70c011eca6..baa4515c18 100644 --- a/src/Marten/Storage/Tenant2.cs +++ b/src/Marten/Storage/Tenant2.cs @@ -10,11 +10,6 @@ public Tenant(string tenantId, IMartenDatabase inner) { Database = inner; TenantId = tenantId; - - if (Database is MartenDatabase db) - { - db.TenantIds.Fill(tenantId); - } } public string TenantId { get; }