Table of Contents

Class SqlColumnBuilder

Namespace
LfrlAnvil.Sql.Objects.Builders
Assembly
LfrlAnvil.Sql.Core.dll

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 SqlTableBuilder

Table that this column belongs to.

name string

Object's name.

typeDefinition SqlColumnTypeDefinition

ISqlColumnTypeDefinition instance that defines the data type of this column.

Properties

Computation

Underlying optional SqlColumnComputation of this column.

public SqlColumnComputation? Computation { get; }

Property Value

SqlColumnComputation?

DefaultValue

Underlying optional default value expression.

public SqlExpressionNode? DefaultValue { get; }

Property Value

SqlExpressionNode

IsNullable

Specifies whether or not this column accepts null values.

public bool IsNullable { get; }

Property Value

bool

Node

Underlying SqlColumnBuilderNode instance that represents this column.

public SqlColumnBuilderNode Node { get; }

Property Value

SqlColumnBuilderNode

ReferencedComputationColumns

Collection of columns referenced by this column's Computation.

public SqlObjectBuilderArray<SqlColumnBuilder> ReferencedComputationColumns { get; }

Property Value

SqlObjectBuilderArray<SqlColumnBuilder>

Table

Table that this column belongs to.

public SqlTableBuilder Table { get; }

Property Value

SqlTableBuilder

TypeDefinition

ISqlColumnTypeDefinition instance that defines the data type of this column.

public SqlColumnTypeDefinition TypeDefinition { get; }

Property Value

SqlColumnTypeDefinition

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 SqlExpressionNode

Original value.

AfterIsNullableChange(bool)

Callback invoked just after IsNullable change has been processed.

protected virtual void AfterIsNullableChange(bool originalValue)

Parameters

originalValue bool

Original value.

AfterNameChange(string)

Callback invoked just after Name change has been processed.

protected override void AfterNameChange(string originalValue)

Parameters

originalValue string

Original 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 SqlColumnTypeDefinition

Original 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 SqlExpressionNode

Value 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 bool

Value 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 string

Value 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 SqlColumnTypeDefinition

Value 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

SqlTableScopeExpressionValidator

New SqlTableScopeExpressionValidator instance.

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 bool

Value 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 SqlExpressionNode

Value 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 string

Name 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 SqlColumnTypeDefinition

Value 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 SqlExpressionNode

Expression 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 SqlExpressionNode

Expression to check.

Remarks

CreateDefaultValueExpressionValidator() creates expression's validator.

Exceptions

SqlObjectBuilderException

When node is not valid.