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
action
SqlDatabaseBuilderCommandActionPending 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
action
Action<IDbCommand>Custom delegate that executes the IDbCommand.
setup
Action<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
activeObject
SqlObjectBuilderActiveObject for which the change should be registered.
target
SqlObjectBuilderTarget object.
descriptor
SqlObjectChangeDescriptor<T>Changed property descriptor.
originalValue
TValue of the changed property before the change.
newValue
TNew value of the changed property.
Type Parameters
T
Property type.
AddComputationChange(SqlColumnBuilder, SqlColumnComputation?)
Callback for registration of column's Computation property change.
protected virtual void AddComputationChange(SqlColumnBuilder target, SqlColumnComputation? originalValue)
Parameters
target
SqlColumnBuilderModified column.
originalValue
SqlColumnComputation?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
target
SqlColumnBuilderModified column.
originalValue
ISqlDataTypeISqlDataType 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
target
SqlColumnBuilderModified column.
originalValue
SqlExpressionNodeColumn'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
target
SqlIndexBuilderModified index.
originalValue
SqlConditionNodeIndex's Filter before the change.
AddIsNullableChange(SqlColumnBuilder)
Callback for registration of column's IsNullable property change.
protected virtual void AddIsNullableChange(SqlColumnBuilder target)
Parameters
target
SqlColumnBuilderModified column.
AddIsRemovedChange(SqlObjectBuilder, SqlObjectBuilder)
Callback for registration of object's IsRemoved property change.
protected virtual void AddIsRemovedChange(SqlObjectBuilder activeObject, SqlObjectBuilder target)
Parameters
activeObject
SqlObjectBuilderActiveObject for which the change should be registered.
target
SqlObjectBuilderCreated or removed object.
AddIsUniqueChange(SqlIndexBuilder)
Callback for registration of index's IsUnique property change.
protected virtual void AddIsUniqueChange(SqlIndexBuilder target)
Parameters
target
SqlIndexBuilderModified index.
AddIsVirtualChange(SqlIndexBuilder)
Callback for registration of index's IsVirtual property change.
protected virtual void AddIsVirtualChange(SqlIndexBuilder target)
Parameters
target
SqlIndexBuilderModified 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
activeObject
SqlObjectBuilderActiveObject for which the change should be registered.
target
SqlObjectBuilderRenamed object.
originalValue
stringObject'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
target
SqlForeignKeyBuilderModified foreign key.
originalValue
ReferenceBehaviorForeign 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
target
SqlForeignKeyBuilderModified foreign key.
originalValue
ReferenceBehaviorForeign 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
statement
ISqlStatementNodeSQL statement node to add.
parameters
IEnumerable<SqlParameter>Source of parameters to bind.
options
SqlParameterBinderCreationOptions?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
statement
ISqlStatementNodeSQL statement node to add.
parameters
TSourceSource of parameters to bind.
options
SqlParameterBinderCreationOptions?Optional SqlParameterBinderCreationOptions.
Returns
- SqlDatabaseChangeTracker
this.
Type Parameters
TSource
Parameter source type.
AddPrimaryKeyChange(SqlIndexBuilder, SqlPrimaryKeyBuilder?)
Callback for registration of index's PrimaryKey property change.
protected virtual void AddPrimaryKeyChange(SqlIndexBuilder target, SqlPrimaryKeyBuilder? originalValue)
Parameters
target
SqlIndexBuilderModified index.
originalValue
SqlPrimaryKeyBuilderIndex's PrimaryKey before the change.
AddSqlAction(string)
Registers a pending SqlDatabaseBuilderCommandAction from the provided sql
statement.
protected void AddSqlAction(string sql)
Parameters
sql
stringPending SQL statement to add.
AddStatement(ISqlStatementNode)
Adds a custom SQL statement
to this change tracker.
public SqlDatabaseChangeTracker AddStatement(ISqlStatementNode statement)
Parameters
statement
ISqlStatementNodeSQL statement node to add.
Returns
- SqlDatabaseChangeTracker
this.
Exceptions
- SqlObjectBuilderException
When
statement
contains parameters.
Attach(bool)
Changes IsAttached value for this change tracker.
public SqlDatabaseChangeTracker Attach(bool enabled = true)
Parameters
enabled
boolValue 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
obj
SqlObjectBuilderModified ActiveObject.
changeAggregator
SqlDatabaseChangeAggregatorSqlDatabaseChangeAggregator 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
obj
SqlObjectBuilderCreated ActiveObject.
CompletePendingRemoveObjectChanges(SqlObjectBuilder)
Callback for completing pending changes for a removed ActiveObject.
protected abstract void CompletePendingRemoveObjectChanges(SqlObjectBuilder obj)
Parameters
obj
SqlObjectBuilderRemoved 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
target
SqlObjectBuilderObject to check.
descriptor
SqlObjectChangeDescriptorProperty 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
target
SqlObjectBuilderObject 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
value
TimeSpan?Value to set.
Returns
- SqlDatabaseChangeTracker
this.
SetModeAndAttach(SqlDatabaseCreateMode)
Sets Mode and marks this change tracker as attached.
protected void SetModeAndAttach(SqlDatabaseCreateMode mode)
Parameters
mode
SqlDatabaseCreateModeMode 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
target
SqlObjectBuilderObject to check.
descriptor
SqlObjectChangeDescriptorProperty change descriptor.
result
objectout 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.