Class SqlCodeGenerator

Namespace
DbExport.Providers.SqlClient
Assembly
DbExport.Api.dll

Represents a code generator specifically designed for generating SQL Server-compatible scripts. Extends the CodeGenerator class to provide SQL Server-specific implementation details for database schema export and related functionality.

public class SqlCodeGenerator : CodeGenerator, IVisitor, IDisposable
Inheritance
SqlCodeGenerator
Implements
Inherited Members

Constructors

SqlCodeGenerator()

Initializes a new instance of the SqlCodeGenerator class.

public SqlCodeGenerator()

SqlCodeGenerator(TextWriter)

Initializes a new instance of the SqlCodeGenerator class with the specified TextWriter for output.

public SqlCodeGenerator(TextWriter output)

Parameters

output TextWriter

The TextWriter to which the generated SQL will be written. Must not be null.

SqlCodeGenerator(string)

Initializes a new instance of the SqlCodeGenerator class that writes output to a file at the specified path.

public SqlCodeGenerator(string path)

Parameters

path string

The file path where the generated SQL will be written. Must not be null or empty.

Properties

GeneratesRowVersion

Gets a value indicating whether this code generator generates row version columns as part of the data export process.

protected override bool GeneratesRowVersion { get; }

Property Value

bool

IsFileBased

Gets or sets a value indicating whether the SQL Server database is file-based. This is typically the case when using SQL Server Express LocalDB.

public bool IsFileBased { get; set; }

Property Value

bool

ProviderName

Gets the name of the database provider for which this code generator is designed to generate SQL scripts.

public override string ProviderName { get; }

Property Value

string

SupportsDbCreation

Gets a value indicating whether this code generator supports generating a CREATE DATABASE statement as part of the export process.

protected override bool SupportsDbCreation { get; }

Property Value

bool

Methods

Format(object, ColumnType)

Formats a value for inclusion in a SQL statement, taking into account the value's type and the corresponding column type.

protected override string Format(object value, ColumnType columnType)

Parameters

value object

The value to be formatted for inclusion in a SQL statement. This could be a default value for a column, a value being inserted into a table, or any other value that needs to be represented as a literal in the generated SQL. The method will determine how to format this value based on its type and the specified column type, ensuring that it is correctly represented in the SQL syntax for the target database provider.

columnType ColumnType

The column type that corresponds to the value being formatted. This information is used to determine how to format the value, such as whether to quote it, how to format dates and times, how to represent binary data, etc., according to the conventions of the target database provider.

Returns

string

A string representing the formatted value, ready to be included as a literal in a SQL statement, formatted according to the conventions of the target database provider.

GetTypeName(IDataItem)

Gets the SQL type name for the given data item, which could be a column or a user-defined data type.

protected override string GetTypeName(IDataItem item)

Parameters

item IDataItem

The data item for which to determine the SQL type name. This could be a column or a user-defined data type. The method will use the properties of the data item, such as ColumnType, Size, Precision, and Scale, to determine the appropriate SQL type name, potentially using provider-specific type mappings and formatting rules.

Returns

string

A string representing the SQL type name for the data item, formatted according to the conventions of the target database provider.

GetTypeReference(DataType)

Gets the SQL type reference for a user-defined data type, which may involve referencing the data type by name or using a specific syntax depending on the target database provider.

protected override string GetTypeReference(DataType dataType)

Parameters

dataType DataType

The user-defined data type for which to get the SQL type reference. This method is called when a column has a ColumnType of UserDefined, and the column's DataType property is not null. The method will determine how to reference this user-defined data type in the generated SQL, which may involve using the data type's name or a specific syntax depending on the conventions of the target database provider.

Returns

string

A string representing the SQL type reference for the user-defined data type, formatted according to the conventions of the target database provider.

VisitDataType(DataType)

Visits a DataType object, allowing the visitor to perform operations on the data type schema.

public override void VisitDataType(DataType dataType)

Parameters

dataType DataType

The DataType object to be visited.

WriteDbCreationDirective(Database)

Writes a CREATE DATABASE statement for the given database, according to the syntax rules of the target database provider.

protected override void WriteDbCreationDirective(Database database)

Parameters

database Database

The database for which to write the CREATE DATABASE statement. This method will generate the appropriate SQL to create the database, including the database name and any necessary syntax according to the conventions of the target database provider. This method is called if the code generator supports database creation and if the export options indicate that the schema should be exported.

WriteDelimiter()

Writes a statement delimiter (such as a semicolon) to the output, according to the syntax rules of the target database provider.

protected override void WriteDelimiter()

WriteIdentitySpecification(Column)

Writes the identity specification for the specified column.

protected override void WriteIdentitySpecification(Column column)

Parameters

column Column

The column for which the identity specification is being written.