DatabaseProvisioningServiceBase<TKey> class
Namespace: Tenantry.Pro.EfCore.Strategies.DatabasePerTenant · Package: Tenantry.Pro.EfCore · API reference
Provider-agnostic base for database-per-tenant provisioning. Implements the shared pipeline (licence guard, connection-string resolution, tenant lookup, database-name extraction, logging) as a template method and defers the ADO.NET-specific work to the provider subclass.
public abstract class DatabaseProvisioningServiceBase<TKey> : ITenantInfrastructureProvisioner<TKey> where TKey : IEquatable<TKey>, IParsable<TKey>Type parameters
TKey: The tenant identifier type.
Implements ITenantInfrastructureProvisioner<TKey>.
Derived types: DatabaseProvisioningService<TKey>, DatabaseProvisioningService<TKey>, DatabaseProvisioningService<TKey>.
Properties
Step
Identifies which lifecycle step this provisioner represents. Used by TenantProvisioningResult<TKey>.CompletedUpTo to record pipeline progress.
public TenantProvisioningStep Step { get; }Value: TenantProvisioningStep
Methods
BuildAdminConnectionString(string)
Returns a connection string that targets a server/admin database (one that always exists), derived from the tenant connection string, so CREATE DATABASE can be issued.
protected abstract string BuildAdminConnectionString(string tenantConnectionString)Parameters:
tenantConnectionStringstring: The tenant's connection string, naming a database that may not exist yet.
Returns: string
CreateDatabaseIfNotExistsAsync(string, string, CancellationToken)
Issues the provider-specific, idempotent CREATE DATABASE against adminConnectionString. Implementations are responsible for identifier escaping.
protected abstract Task CreateDatabaseIfNotExistsAsync(string adminConnectionString, string databaseName, CancellationToken cancellationToken)Parameters:
adminConnectionStringstring: A connection string for the server's administrative database, fromDatabaseProvisioningServiceBase<TKey>.BuildAdminConnectionString.databaseNamestring: The name of the tenant database to create, unescaped.cancellationTokenCancellationToken: Cancels the operation.
Returns: Task
ExtractDatabaseName(string)
Extracts the tenant database name from the tenant connection string.
protected abstract string? ExtractDatabaseName(string tenantConnectionString)Parameters:
tenantConnectionStringstring: The tenant's connection string.
Returns: string
ProvisionAsync(TKey, CancellationToken)
Creates the database for tenantId if it does not already exist.
public Task ProvisionAsync(TKey tenantId, CancellationToken cancellationToken = default)Parameters:
tenantIdTKey: The tenant to provision.cancellationTokenCancellationToken: A cancellation token.
Returns: Task
Exceptions:
LicenseRequiredException: The licence key is missing or invalid.