Class SqlDatabaseChangeTracker
Represents a tracker of changes applied to the attached database builder.
public abstract class SqlDatabaseChangeTracker : ISqlDatabaseChangeTracker
- Inheritance
-
SqlDatabaseChangeTracker
- Implements
- Derived
- Inherited Members
- Extension Methods
Constructors
SqlDatabaseChangeTracker()
Creates a new SqlDatabaseChangeTracker instance.
protected SqlDatabaseChangeTracker()
Properties
ActionTimeout
Optional CommandTimeout for registered SqlDatabaseBuilderCommandAction instances.
public TimeSpan? ActionTimeout { get; }
Property Value
ActiveObject
Represents a currently tracked SQL object builder instance, whose changes will be aggregated.
public SqlObjectBuilder? ActiveObject { get; }
Property Value
ActiveObjectExistenceState
Specifies the existence state of ActiveObject.
public SqlObjectExistenceState ActiveObjectExistenceState { get; }
Property Value
Database
Database that this instance tracks.
public SqlDatabaseBuilder Database { get; }
Property Value
IsActive
Specifies whether or not this change tracker will register changes.
public bool IsActive { get; }
Property Value
Remarks
See IsAttached and Mode for more information.
IsAttached
Specifies whether or not this change tracker is attached.
public bool IsAttached { get; }
Property Value
Remarks
Change tracker will ignore all changes when IsAttached is equal to false.
Mode
Specifies the current SqlDatabaseCreateMode.
public SqlDatabaseCreateMode Mode { get; }
Property Value
Remarks
Methods
AddAction(SqlDatabaseBuilderCommandAction)
Registers a pending SqlDatabaseBuilderCommandAction.
protected void AddAction(SqlDatabaseBuilderCommandAction action)
Parameters
actionSqlDatabaseBuilderCommandActionPending action to add.
AddAction(Action<IDbCommand>, Action<IDbCommand>?)
Adds a custom SqlDatabaseBuilderCommandAction to this change tracker.
public SqlDatabaseChangeTracker AddAction(Action<IDbCommand> action, Action<IDbCommand>? setup = null)
Parameters
actionAction<IDbCommand>Custom delegate that executes the IDbCommand.
setupAction<IDbCommand>Optional delegate that prepares the IDbCommand. Can be used to e.g. prepare a collection of parameters. Equal to null by default.
Returns
- SqlDatabaseChangeTracker
this.
AddChange<T>(SqlObjectBuilder, SqlObjectBuilder, SqlObjectChangeDescriptor<T>, T, T)
Registers a change.
protected void AddChange<T>(SqlObjectBuilder activeObject, SqlObjectBuilder target, SqlObjectChangeDescriptor<T> descriptor, T originalValue, T newValue)
Parameters
activeObjectSqlObjectBuilderActiveObject for which the change should be registered.
targetSqlObjectBuilderTarget object.
descriptorSqlObjectChangeDescriptor<T>Changed property descriptor.
originalValueTValue of the changed property before the change.
newValueTNew value of the changed property.
Type Parameters
TProperty type.
AddComputationChange(SqlColumnBuilder, SqlColumnComputation?)
Callback for registration of column's Computation property change.
protected virtual void AddComputationChange(SqlColumnBuilder target, SqlColumnComputation? originalValue)
Parameters
targetSqlColumnBuilderModified column.
originalValueSqlColumnComputation?Column's Computation before the change.
AddDataTypeChange(SqlColumnBuilder, ISqlDataType)
Callback for registration of ISqlDataType of column's TypeDefinition property change.
protected virtual void AddDataTypeChange(SqlColumnBuilder target, ISqlDataType originalValue)
Parameters
targetSqlColumnBuilderModified column.
originalValueISqlDataTypeISqlDataType of column's TypeDefinition before the change.
AddDefaultValueChange(SqlColumnBuilder, SqlExpressionNode?)
Callback for registration of column's DefaultValue property change.
protected virtual void AddDefaultValueChange(SqlColumnBuilder target, SqlExpressionNode? originalValue)
Parameters
targetSqlColumnBuilderModified column.
originalValueSqlExpressionNodeColumn's DefaultValue before the change.
AddFilterChange(SqlIndexBuilder, SqlConditionNode?)
Callback for registration of index's Filter property change.
protected virtual void AddFilterChange(SqlIndexBuilder target, SqlConditionNode? originalValue)
Parameters
targetSqlIndexBuilderModified index.
originalValueSqlConditionNodeIndex's Filter before the change.
AddIsNullableChange(SqlColumnBuilder)
Callback for registration of column's IsNullable property change.
protected virtual void AddIsNullableChange(SqlColumnBuilder target)
Parameters
targetSqlColumnBuilderModified column.
AddIsRemovedChange(SqlObjectBuilder, SqlObjectBuilder)
Callback for registration of object's IsRemoved property change.
protected virtual void AddIsRemovedChange(SqlObjectBuilder activeObject, SqlObjectBuilder target)
Parameters
activeObjectSqlObjectBuilderActiveObject for which the change should be registered.
targetSqlObjectBuilderCreated or removed object.
AddIsUniqueChange(SqlIndexBuilder)
Callback for registration of index's IsUnique property change.
protected virtual void AddIsUniqueChange(SqlIndexBuilder target)
Parameters
targetSqlIndexBuilderModified index.
AddIsVirtualChange(SqlIndexBuilder)
Callback for registration of index's IsVirtual property change.
protected virtual void AddIsVirtualChange(SqlIndexBuilder target)
Parameters
targetSqlIndexBuilderModified index.
AddNameChange(SqlObjectBuilder, SqlObjectBuilder, string)
Callback for registration of object's Name property change.
protected virtual void AddNameChange(SqlObjectBuilder activeObject, SqlObjectBuilder target, string originalValue)
Parameters
activeObjectSqlObjectBuilderActiveObject for which the change should be registered.
targetSqlObjectBuilderRenamed object.
originalValuestringObject's Name before the change.
AddOnDeleteBehaviorChange(SqlForeignKeyBuilder, ReferenceBehavior)
Callback for registration of foreign key's OnDeleteBehavior property change.
protected virtual void AddOnDeleteBehaviorChange(SqlForeignKeyBuilder target, ReferenceBehavior originalValue)
Parameters
targetSqlForeignKeyBuilderModified foreign key.
originalValueReferenceBehaviorForeign key's OnDeleteBehavior before the change.
AddOnUpdateBehaviorChange(SqlForeignKeyBuilder, ReferenceBehavior)
Callback for registration of foreign key's OnUpdateBehavior property change.
protected virtual void AddOnUpdateBehaviorChange(SqlForeignKeyBuilder target, ReferenceBehavior originalValue)
Parameters
targetSqlForeignKeyBuilderModified foreign key.
originalValueReferenceBehaviorForeign key's OnUpdateBehavior before the change.
AddParameterizedStatement(ISqlStatementNode, IEnumerable<SqlParameter>, SqlParameterBinderCreationOptions?)
Adds a custom parameterized SQL statement to this change tracker.
public SqlDatabaseChangeTracker AddParameterizedStatement(ISqlStatementNode statement, IEnumerable<SqlParameter> parameters, SqlParameterBinderCreationOptions? options = null)
Parameters
statementISqlStatementNodeSQL statement node to add.
parametersIEnumerable<SqlParameter>Source of parameters to bind.
optionsSqlParameterBinderCreationOptions?Optional SqlParameterBinderCreationOptions.
Returns
- SqlDatabaseChangeTracker
this.
AddParameterizedStatement<TSource>(ISqlStatementNode, TSource, SqlParameterBinderCreationOptions?)
Adds a custom parameterized SQL statement to this change tracker.
public SqlDatabaseChangeTracker AddParameterizedStatement<TSource>(ISqlStatementNode statement, TSource parameters, SqlParameterBinderCreationOptions? options = null) where TSource : notnull
Parameters
statementISqlStatementNodeSQL statement node to add.
parametersTSourceSource of parameters to bind.
optionsSqlParameterBinderCreationOptions?Optional SqlParameterBinderCreationOptions.
Returns
- SqlDatabaseChangeTracker
this.
Type Parameters
TSourceParameter source type.
AddPrimaryKeyChange(SqlIndexBuilder, SqlPrimaryKeyBuilder?)
Callback for registration of index's PrimaryKey property change.
protected virtual void AddPrimaryKeyChange(SqlIndexBuilder target, SqlPrimaryKeyBuilder? originalValue)
Parameters
targetSqlIndexBuilderModified index.
originalValueSqlPrimaryKeyBuilderIndex's PrimaryKey before the change.
AddSqlAction(string)
Registers a pending SqlDatabaseBuilderCommandAction from the provided sql statement.
protected void AddSqlAction(string sql)
Parameters
sqlstringPending SQL statement to add.
AddStatement(ISqlStatementNode)
Adds a custom SQL statement to this change tracker.
public SqlDatabaseChangeTracker AddStatement(ISqlStatementNode statement)
Parameters
statementISqlStatementNodeSQL statement node to add.
Returns
- SqlDatabaseChangeTracker
this.
Exceptions
- SqlObjectBuilderException
When
statementcontains parameters.
Attach(bool)
Changes IsAttached value for this change tracker.
public SqlDatabaseChangeTracker Attach(bool enabled = true)
Parameters
enabledboolValue to set. Equal to true by default.
Returns
- SqlDatabaseChangeTracker
this.
CompletePendingAlterObjectChanges(SqlObjectBuilder, SqlDatabaseChangeAggregator)
Callback for completing pending changes for a modified ActiveObject.
protected abstract void CompletePendingAlterObjectChanges(SqlObjectBuilder obj, SqlDatabaseChangeAggregator changeAggregator)
Parameters
objSqlObjectBuilderModified ActiveObject.
changeAggregatorSqlDatabaseChangeAggregatorSqlDatabaseChangeAggregator populated with all ActiveObject changes.
CompletePendingChanges()
Completes all pending changes and registers appropriate SqlDatabaseBuilderCommandAction instances for them.
public SqlDatabaseChangeTracker CompletePendingChanges()
Returns
- SqlDatabaseChangeTracker
this.
CompletePendingCreateObjectChanges(SqlObjectBuilder)
Callback for completing pending changes for a created ActiveObject.
protected abstract void CompletePendingCreateObjectChanges(SqlObjectBuilder obj)
Parameters
objSqlObjectBuilderCreated ActiveObject.
CompletePendingRemoveObjectChanges(SqlObjectBuilder)
Callback for completing pending changes for a removed ActiveObject.
protected abstract void CompletePendingRemoveObjectChanges(SqlObjectBuilder obj)
Parameters
objSqlObjectBuilderRemoved ActiveObject.
ContainsChange(SqlObjectBuilder, SqlObjectChangeDescriptor)
Checks whether or not a change for the given target
and its property's descriptor is currently pending.
[Pure]
public bool ContainsChange(SqlObjectBuilder target, SqlObjectChangeDescriptor descriptor)
Parameters
targetSqlObjectBuilderObject to check.
descriptorSqlObjectChangeDescriptorProperty change descriptor.
Returns
- bool
true when the change is pending, otherwise false.
CreateAlterObjectChangeAggregator()
Creates a new empty SqlDatabaseChangeAggregator instance.
[Pure]
protected abstract SqlDatabaseChangeAggregator CreateAlterObjectChangeAggregator()
Returns
- SqlDatabaseChangeAggregator
New SqlDatabaseChangeAggregator instance.
Remarks
This method should only be invoked once, the first time an aggregator is required.
CreateNodeInterpreter()
Creates a new SqlNodeInterpreter instance.
protected SqlNodeInterpreter CreateNodeInterpreter()
Returns
- SqlNodeInterpreter
New SqlNodeInterpreter instance.
GetExistenceState(SqlObjectBuilder)
Returns SqlObjectExistenceState value for the given ISqlObjectBuilder instance.
[Pure]
public SqlObjectExistenceState GetExistenceState(SqlObjectBuilder target)
Parameters
targetSqlObjectBuilderObject to check.
Returns
- SqlObjectExistenceState
One of three possible values:
Remarks
Use ActiveObjectExistenceState instead, for reading current state of the ActiveObject.
GetNodeInterpreterContext()
Creates a new empty SqlNodeInterpreterContext instance or returns a cached instance.
protected SqlNodeInterpreterContext GetNodeInterpreterContext()
Returns
- SqlNodeInterpreterContext
New SqlNodeInterpreterContext or cached instance.
GetOrCreateAlterObjectChangeAggregator()
Creates a new empty SqlDatabaseChangeAggregator instance or returns a cached instance.
protected SqlDatabaseChangeAggregator GetOrCreateAlterObjectChangeAggregator()
Returns
- SqlDatabaseChangeAggregator
New SqlDatabaseChangeAggregator or cached instance.
Remarks
See CreateAlterObjectChangeAggregator() for method that creates a new instance.
GetPendingActions()
Returns a collection of all pending SqlDatabaseBuilderCommandAction instances.
public ReadOnlySpan<SqlDatabaseBuilderCommandAction> GetPendingActions()
Returns
- ReadOnlySpan<SqlDatabaseBuilderCommandAction>
Collection of all pending SqlDatabaseBuilderCommandAction instances.
SetActionTimeout(TimeSpan?)
Changes ActionTimeout value for this change tracker.
public SqlDatabaseChangeTracker SetActionTimeout(TimeSpan? value)
Parameters
valueTimeSpan?Value to set.
Returns
- SqlDatabaseChangeTracker
this.
SetModeAndAttach(SqlDatabaseCreateMode)
Sets Mode and marks this change tracker as attached.
protected void SetModeAndAttach(SqlDatabaseCreateMode mode)
Parameters
modeSqlDatabaseCreateModeMode to set.
Remarks
Internal use only.
TryGetOriginalValue(SqlObjectBuilder, SqlObjectChangeDescriptor, out object?)
Attempts to return a value before the change associated with the given target
and its property's descriptor.
public bool TryGetOriginalValue(SqlObjectBuilder target, SqlObjectChangeDescriptor descriptor, out object? result)
Parameters
targetSqlObjectBuilderObject to check.
descriptorSqlObjectChangeDescriptorProperty change descriptor.
resultobjectout parameter that returns the value before the change was made.
Returns
- bool
true when the change is pending and original value was retrieved, otherwise false.