Class SqlDatabaseFactory<TDatabase>
Represents a factory of SQL databases.
public abstract class SqlDatabaseFactory<TDatabase> : ISqlDatabaseFactory where TDatabase : SqlDatabase
Type Parameters
TDatabase
SQL database type.
- Inheritance
-
SqlDatabaseFactory<TDatabase>
- Implements
- Derived
- Inherited Members
Constructors
SqlDatabaseFactory(SqlDialect)
Creates a new SqlDatabaseFactory<TDatabase> instance.
protected SqlDatabaseFactory(SqlDialect dialect)
Parameters
dialect
SqlDialect
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
connectionString
stringConnection string to the database.
versionHistory
SqlDatabaseVersionHistoryCollection of DB versions.
options
SqlCreateDatabaseOptionsDB 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
parameterBinders
SqlParameterBinderFactoryParameter binder factory.
options
SqlCreateDatabaseOptionsDB creation options.
Returns
CreateConnection(DbConnectionStringBuilder)
Creates a new unopened DbConnection instance.
[Pure]
protected abstract DbConnection CreateConnection(DbConnectionStringBuilder connectionString)
Parameters
connectionString
DbConnectionStringBuilderConnection string builder.
Returns
- DbConnection
New DbConnection instance.
CreateConnectionStringBuilder(string)
Creates a new DbConnectionStringBuilder instance.
[Pure]
protected abstract DbConnectionStringBuilder CreateConnectionStringBuilder(string connectionString)
Parameters
connectionString
stringConnection 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
builder
SqlDatabaseBuilderSource database builder.
connectionString
DbConnectionStringBuilderConnection string builder.
connection
DbConnectionOpened connection to the database.
eventHandler
DbConnectionEventHandlerCollection of SqlDatabaseConnectionChangeEvent callbacks.
versionHistoryRecordsQuery
SqlQueryReaderExecutor<SqlDatabaseVersionRecord>Query reader's executor capable of reading metadata of all versions applied to the database.
version
VersionCurrent 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
defaultSchemaName
stringInitial name of the Default schema. Version history table will belong to this schema.
connection
DbConnectionOpened 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
connectionString
DbConnectionStringBuilderConnection string builder.
connection
DbConnectionOpened connection to the database.
nodeInterpreter
SqlNodeInterpreterSqlNodeInterpreter instance.
executor
SqlDatabaseFactoryStatementExecutorDecorator 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
changeTracker
SqlDatabaseChangeTrackerDatabase builder's change tracker.
versionHistoryTableName
SqlSchemaObjectNameName of the version history table.
nodeInterpreter
SqlNodeInterpreterSqlNodeInterpreter instance.
connection
DbConnectionOpened connection to the database.
executor
SqlDatabaseFactoryStatementExecutorDecorator 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
queryReaders
SqlQueryReaderFactoryQuery 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
exception
ExceptionThrown exception.
connection
DbConnectionOpened connection to the database.
VersionHistoryTableBuilderInit(SqlTableBuilder)
Initializes the version history table builder.
protected virtual void VersionHistoryTableBuilderInit(SqlTableBuilder builder)
Parameters
builder
SqlTableBuilderVersion history table builder.