Class SqlColumnBuilder
Represents an SQL table column builder.
public abstract class SqlColumnBuilder : SqlObjectBuilder, ISqlColumnBuilder, ISqlObjectBuilder
- Inheritance
-
SqlColumnBuilder
- Implements
- Derived
- Inherited Members
- Extension Methods
Constructors
SqlColumnBuilder(SqlTableBuilder, string, SqlColumnTypeDefinition)
Creates a new SqlColumnBuilder instance.
protected SqlColumnBuilder(SqlTableBuilder table, string name, SqlColumnTypeDefinition typeDefinition)
Parameters
table
SqlTableBuilderTable that this column belongs to.
name
stringObject's name.
typeDefinition
SqlColumnTypeDefinitionISqlColumnTypeDefinition instance that defines the data type of this column.
Properties
Computation
Underlying optional SqlColumnComputation of this column.
public SqlColumnComputation? Computation { get; }
Property Value
DefaultValue
Underlying optional default value expression.
public SqlExpressionNode? DefaultValue { get; }
Property Value
IsNullable
Specifies whether or not this column accepts null values.
public bool IsNullable { get; }
Property Value
Node
Underlying SqlColumnBuilderNode instance that represents this column.
public SqlColumnBuilderNode Node { get; }
Property Value
ReferencedComputationColumns
Collection of columns referenced by this column's Computation.
public SqlObjectBuilderArray<SqlColumnBuilder> ReferencedComputationColumns { get; }
Property Value
Table
Table that this column belongs to.
public SqlTableBuilder Table { get; }
Property Value
TypeDefinition
ISqlColumnTypeDefinition instance that defines the data type of this column.
public SqlColumnTypeDefinition TypeDefinition { get; }
Property Value
Methods
AfterComputationChange(SqlColumnComputation?)
Callback invoked just after Computation change has been processed.
protected virtual void AfterComputationChange(SqlColumnComputation? originalValue)
Parameters
originalValue
SqlColumnComputation?Original value.
AfterDefaultValueChange(SqlExpressionNode?)
Callback invoked just after DefaultValue change has been processed.
protected virtual void AfterDefaultValueChange(SqlExpressionNode? originalValue)
Parameters
originalValue
SqlExpressionNodeOriginal value.
AfterIsNullableChange(bool)
Callback invoked just after IsNullable change has been processed.
protected virtual void AfterIsNullableChange(bool originalValue)
Parameters
originalValue
boolOriginal value.
AfterNameChange(string)
Callback invoked just after Name change has been processed.
protected override void AfterNameChange(string originalValue)
Parameters
originalValue
stringOriginal value.
AfterRemove()
Callback invoked just after the removal has been processed.
protected override void AfterRemove()
AfterTypeDefinitionChange(SqlColumnTypeDefinition)
Callback invoked just after TypeDefinition change has been processed.
protected virtual void AfterTypeDefinitionChange(SqlColumnTypeDefinition originalValue)
Parameters
originalValue
SqlColumnTypeDefinitionOriginal value.
Asc()
Creates a new SqlOrderByNode instance from this column with Asc ordering.
[Pure]
public SqlOrderByNode Asc()
Returns
- SqlOrderByNode
New SqlOrderByNode instance.
BeforeComputationChange(SqlColumnComputation?)
Callback invoked just before Computation change is processed.
protected virtual SqlPropertyChange<SqlColumnComputation?> BeforeComputationChange(SqlColumnComputation? newValue)
Parameters
newValue
SqlColumnComputation?Value to set.
Returns
- SqlPropertyChange<SqlColumnComputation?>
SqlPropertyChange<T> instance associated with Computation change attempt.
Exceptions
- SqlObjectBuilderException
When Computation of this column cannot be changed.
BeforeDefaultValueChange(SqlExpressionNode?)
Callback invoked just before DefaultValue change is processed.
protected virtual SqlPropertyChange<SqlExpressionNode?> BeforeDefaultValueChange(SqlExpressionNode? newValue)
Parameters
newValue
SqlExpressionNodeValue to set.
Returns
- SqlPropertyChange<SqlExpressionNode>
SqlPropertyChange<T> instance associated with DefaultValue change attempt.
Exceptions
- SqlObjectBuilderException
When DefaultValue of this column cannot be changed.
BeforeIsNullableChange(bool)
Callback invoked just before IsNullable change is processed.
protected virtual SqlPropertyChange<bool> BeforeIsNullableChange(bool newValue)
Parameters
newValue
boolValue to set.
Returns
- SqlPropertyChange<bool>
SqlPropertyChange<T> instance associated with IsNullable change attempt.
Exceptions
- SqlObjectBuilderException
When IsNullable of this column cannot be changed.
BeforeNameChange(string)
Callback invoked just before Name change is processed.
protected override SqlPropertyChange<string> BeforeNameChange(string newValue)
Parameters
newValue
stringValue to set.
Returns
- SqlPropertyChange<string>
SqlPropertyChange<T> instance associated with Name change attempt.
Exceptions
- SqlObjectBuilderException
When Name of this object cannot be changed.
BeforeRemove()
Callback invoked just before the removal is processed.
protected override void BeforeRemove()
Exceptions
- SqlObjectBuilderException
When this object cannot be removed.
BeforeTypeDefinitionChange(SqlColumnTypeDefinition)
Callback invoked just before TypeDefinition change is processed.
protected virtual SqlPropertyChange<SqlColumnTypeDefinition> BeforeTypeDefinitionChange(SqlColumnTypeDefinition newValue)
Parameters
newValue
SqlColumnTypeDefinitionValue to set.
Returns
- SqlPropertyChange<SqlColumnTypeDefinition>
SqlPropertyChange<T> instance associated with TypeDefinition change attempt.
Exceptions
- SqlObjectBuilderException
When TypeDefinition of this column cannot be changed.
ClearComputationColumnReferences()
Removes all columns from ReferencedComputationColumns and removes this column's Computation from their reference sources.
protected void ClearComputationColumnReferences()
CreateComputationExpressionValidator()
Creates a new SqlTableScopeExpressionValidator used for Computation expression validation.
[Pure]
protected virtual SqlTableScopeExpressionValidator CreateComputationExpressionValidator()
Returns
CreateDefaultValueExpressionValidator()
Creates a new SqlConstantExpressionValidator used for DefaultValue validation.
[Pure]
protected virtual SqlConstantExpressionValidator CreateDefaultValueExpressionValidator()
Returns
- SqlConstantExpressionValidator
New SqlConstantExpressionValidator instance.
Desc()
Creates a new SqlOrderByNode instance from this column with Desc ordering.
[Pure]
public SqlOrderByNode Desc()
Returns
- SqlOrderByNode
New SqlOrderByNode instance.
MarkAsNullable(bool)
Changes IsNullable value of this column.
public SqlColumnBuilder MarkAsNullable(bool enabled = true)
Parameters
enabled
boolValue to set. Equal to true by default.
Returns
- SqlColumnBuilder
this.
Exceptions
- SqlObjectBuilderException
When nullability cannot be changed.
QuickRemoveCore()
Performs a quick removal of this object.
protected override void QuickRemoveCore()
Remarks
See QuickRemove(SqlObjectBuilder) for more information.
SetComputation(SqlColumnComputation?)
Changes Computation value of this column.
public SqlColumnBuilder SetComputation(SqlColumnComputation? computation)
Parameters
computation
SqlColumnComputation?Value to set.
Returns
- SqlColumnBuilder
this.
Remarks
Changing the computation to non-null will reset the DefaultValue to null.
Exceptions
- SqlObjectBuilderException
When computation cannot be changed.
SetComputationColumnReferences(ReadOnlyArray<SqlColumnBuilder>)
Adds a collection of columns
to ReferencedComputationColumns
and adds this column's Computation to their reference sources.
protected void SetComputationColumnReferences(ReadOnlyArray<SqlColumnBuilder> columns)
Parameters
columns
ReadOnlyArray<SqlColumnBuilder>Collection of columns to add.
SetDefaultValue(SqlExpressionNode?)
Changes DefaultValue value of this column.
public SqlColumnBuilder SetDefaultValue(SqlExpressionNode? value)
Parameters
value
SqlExpressionNodeValue to set.
Returns
- SqlColumnBuilder
this.
Exceptions
- SqlObjectBuilderException
When default value cannot be changed.
SetDefaultValueBasedOnDataType()
Assigns DefaultValue of the current TypeDefinition to the DefaultValue without notifying the change tracker.
protected void SetDefaultValueBasedOnDataType()
Remarks
This method assumes that the current Computation is null.
SetName(string)
Changes the name of this object.
public SqlColumnBuilder SetName(string name)
Parameters
name
stringName to set.
Returns
- SqlColumnBuilder
this.
Exceptions
- SqlObjectBuilderException
When name cannot be changed.
SetType(SqlColumnTypeDefinition)
Changes TypeDefinition value of this column.
public SqlColumnBuilder SetType(SqlColumnTypeDefinition definition)
Parameters
definition
SqlColumnTypeDefinitionValue to set.
Returns
- SqlColumnBuilder
this.
Remarks
Changing the type will reset the DefaultValue to null.
Exceptions
- SqlObjectBuilderException
When type definition cannot be changed.
ThrowIfCannotHaveDefaultValue()
Throws an exception when DefaultValue cannot be non-null.
protected void ThrowIfCannotHaveDefaultValue()
Remarks
Computation must be null.
Exceptions
- SqlObjectBuilderException
When DefaultValue cannot be non-null.
ThrowIfTypeDefinitionIsUnrecognized(SqlColumnTypeDefinition)
Throws an exception when the provided definition
does not exist in the database's TypeDefinitions.
protected void ThrowIfTypeDefinitionIsUnrecognized(SqlColumnTypeDefinition definition)
Parameters
definition
SqlColumnTypeDefinition
Exceptions
- SqlObjectBuilderException
When
definition
is not recognized.
ToString()
Returns a string representation of this SqlColumnBuilder instance.
[Pure]
public override string ToString()
Returns
- string
String representation.
ValidateComputationExpression(SqlExpressionNode)
Checks if the provided expression is a valid Computation expression.
[Pure]
protected ReadOnlyArray<SqlColumnBuilder> ValidateComputationExpression(SqlExpressionNode expression)
Parameters
expression
SqlExpressionNodeExpression to check.
Returns
- ReadOnlyArray<SqlColumnBuilder>
Collection of columns referenced by the
expression
.
Remarks
CreateComputationExpressionValidator() creates expression's validator.
Exceptions
- SqlObjectBuilderException
When
expression
is not valid.
ValidateDefaultValueExpression(SqlExpressionNode)
Checks if the provided expression is a valid DefaultValue.
protected void ValidateDefaultValueExpression(SqlExpressionNode node)
Parameters
node
SqlExpressionNodeExpression to check.
Remarks
CreateDefaultValueExpressionValidator() creates expression's validator.
Exceptions
- SqlObjectBuilderException
When
node
is not valid.