Class SqlDatabaseFactory<TDatabase>
Represents a factory of SQL databases.
public abstract class SqlDatabaseFactory<TDatabase> : ISqlDatabaseFactory where TDatabase : SqlDatabase
Type Parameters
TDatabaseSQL database type.
- Inheritance
-
SqlDatabaseFactory<TDatabase>
- Implements
- Derived
- Inherited Members
Constructors
SqlDatabaseFactory(SqlDialect)
Creates a new SqlDatabaseFactory<TDatabase> instance.
protected SqlDatabaseFactory(SqlDialect dialect)
Parameters
dialectSqlDialect
Properties
Dialect
Specifies the SQL dialect of this factory.
public SqlDialect Dialect { get; }
Property Value
Methods
Create(string, SqlDatabaseVersionHistory, SqlCreateDatabaseOptions)
Attempts to create a new ISqlDatabase instance from the provided history of versions.
public SqlCreateDatabaseResult<TDatabase> Create(string connectionString, SqlDatabaseVersionHistory versionHistory, SqlCreateDatabaseOptions options = default)
Parameters
connectionStringstringConnection string to the database.
versionHistorySqlDatabaseVersionHistoryCollection of DB versions.
optionsSqlCreateDatabaseOptionsDB creation options.
Returns
- SqlCreateDatabaseResult<TDatabase>
New SqlCreateDatabaseResult<TDatabase> instance.
CreateCommitVersionsContext(SqlParameterBinderFactory, SqlCreateDatabaseOptions)
Creates a new SqlDatabaseCommitVersionsContext instance, used for managing application of versions to the database.
[Pure]
protected virtual SqlDatabaseCommitVersionsContext CreateCommitVersionsContext(SqlParameterBinderFactory parameterBinders, SqlCreateDatabaseOptions options)
Parameters
parameterBindersSqlParameterBinderFactoryParameter binder factory.
optionsSqlCreateDatabaseOptionsDB creation options.
Returns
CreateConnection(DbConnectionStringBuilder)
Creates a new unopened DbConnection instance.
[Pure]
protected abstract DbConnection CreateConnection(DbConnectionStringBuilder connectionString)
Parameters
connectionStringDbConnectionStringBuilderConnection string builder.
Returns
- DbConnection
New DbConnection instance.
CreateConnectionStringBuilder(string)
Creates a new DbConnectionStringBuilder instance.
[Pure]
protected abstract DbConnectionStringBuilder CreateConnectionStringBuilder(string connectionString)
Parameters
connectionStringstringConnection string.
Returns
- DbConnectionStringBuilder
New DbConnectionStringBuilder instance.
CreateDatabase(SqlDatabaseBuilder, DbConnectionStringBuilder, DbConnection, DbConnectionEventHandler, SqlQueryReaderExecutor<SqlDatabaseVersionRecord>, Version)
Creates a new SqlDatabase instance.
protected abstract TDatabase CreateDatabase(SqlDatabaseBuilder builder, DbConnectionStringBuilder connectionString, DbConnection connection, DbConnectionEventHandler eventHandler, SqlQueryReaderExecutor<SqlDatabaseVersionRecord> versionHistoryRecordsQuery, Version version)
Parameters
builderSqlDatabaseBuilderSource database builder.
connectionStringDbConnectionStringBuilderConnection string builder.
connectionDbConnectionOpened connection to the database.
eventHandlerDbConnectionEventHandlerCollection of SqlDatabaseConnectionChangeEvent callbacks.
versionHistoryRecordsQuerySqlQueryReaderExecutor<SqlDatabaseVersionRecord>Query reader's executor capable of reading metadata of all versions applied to the database.
versionVersionCurrent version of the database.
Returns
- TDatabase
New SqlDatabase instance.
CreateDatabaseBuilder(string, DbConnection)
Creates a new SqlDatabaseBuilder instance.
[Pure]
protected abstract SqlDatabaseBuilder CreateDatabaseBuilder(string defaultSchemaName, DbConnection connection)
Parameters
defaultSchemaNamestringInitial name of the Default schema. Version history table will belong to this schema.
connectionDbConnectionOpened connection to the database.
Returns
- SqlDatabaseBuilder
New SqlDatabaseBuilder instance.
FinalizeConnectionPreparations(DbConnectionStringBuilder, DbConnection, SqlNodeInterpreter, ref SqlDatabaseFactoryStatementExecutor)
Finalizes DB connection preparations. This method is invoked right before version history table initialization.
protected virtual void FinalizeConnectionPreparations(DbConnectionStringBuilder connectionString, DbConnection connection, SqlNodeInterpreter nodeInterpreter, ref SqlDatabaseFactoryStatementExecutor executor)
Parameters
connectionStringDbConnectionStringBuilderConnection string builder.
connectionDbConnectionOpened connection to the database.
nodeInterpreterSqlNodeInterpreterSqlNodeInterpreter instance.
executorSqlDatabaseFactoryStatementExecutorDecorator for executing SQL statements on the database.
GetChangeTrackerAttachmentForVersionHistoryTableInit(SqlDatabaseChangeTracker, SqlSchemaObjectName, SqlNodeInterpreter, DbConnection, ref SqlDatabaseFactoryStatementExecutor)
Checks whether or not the version history table should be attached as a change from which an SQL statement should be created and executed.
protected abstract bool GetChangeTrackerAttachmentForVersionHistoryTableInit(SqlDatabaseChangeTracker changeTracker, SqlSchemaObjectName versionHistoryTableName, SqlNodeInterpreter nodeInterpreter, DbConnection connection, ref SqlDatabaseFactoryStatementExecutor executor)
Parameters
changeTrackerSqlDatabaseChangeTrackerDatabase builder's change tracker.
versionHistoryTableNameSqlSchemaObjectNameName of the version history table.
nodeInterpreterSqlNodeInterpreterSqlNodeInterpreter instance.
connectionDbConnectionOpened connection to the database.
executorSqlDatabaseFactoryStatementExecutorDecorator for executing SQL statements on the database.
Returns
- bool
true when version history table should be created in the database, otherwise false.
Remarks
This method can also be used for registering other common database objects.
GetDefaultVersionHistoryName()
Creates a new SqlSchemaObjectName instance that represents default version history table name.
[Pure]
protected abstract SqlSchemaObjectName GetDefaultVersionHistoryName()
Returns
- SqlSchemaObjectName
New SqlSchemaObjectName instance.
GetVersionHistoryRecordsQueryDelegate(SqlQueryReaderFactory)
Creates a delegate capable of reading metadata of all versions applied to this database.
[Pure]
protected virtual Func<IDataReader, SqlQueryReaderOptions, SqlQueryResult<SqlDatabaseVersionRecord>> GetVersionHistoryRecordsQueryDelegate(SqlQueryReaderFactory queryReaders)
Parameters
queryReadersSqlQueryReaderFactoryQuery reader factory.
Returns
- Func<IDataReader, SqlQueryReaderOptions, SqlQueryResult<SqlDatabaseVersionRecord>>
Delegate capable of reading metadata of all versions applied to this database.
OnUncaughtException(Exception, DbConnection)
Allows to react to an unexpected exception.
protected virtual void OnUncaughtException(Exception exception, DbConnection connection)
Parameters
exceptionExceptionThrown exception.
connectionDbConnectionOpened connection to the database.
VersionHistoryTableBuilderInit(SqlTableBuilder)
Initializes the version history table builder.
protected virtual void VersionHistoryTableBuilderInit(SqlTableBuilder builder)
Parameters
builderSqlTableBuilderVersion history table builder.