Docs
Tenantry ProAPI reference

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:

  • tenantConnectionString string: 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:

Returns: Task

ExtractDatabaseName(string)

Extracts the tenant database name from the tenant connection string.

protected abstract string? ExtractDatabaseName(string tenantConnectionString)

Parameters:

  • tenantConnectionString string: 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:

  • tenantId TKey: The tenant to provision.
  • cancellationToken CancellationToken: A cancellation token.

Returns: Task

Exceptions:

On this page