public IEnumerable <ColumnDefinition> GenerateColumnDefinitions(Table table, QuoteType quoteType = QuoteType.NotQuoted) { List <ColumnDefinition> columns = new List <ColumnDefinition>(); foreach (var column in table.Columns) { SqlDataType sqlDataType = SqlDataType.Parse(column.DataType); DataTypeReference dataType = GenerateDataTypeReference(sqlDataType); if (column.IsIdentity) { ColumnDefinition columnDef = ScriptFactory.IdentityColumn(column.Name, dataType, CreateIdentityOptions(column), quoteType); columns.Add(columnDef); } else if (column.RowGuid) { if (!string.IsNullOrEmpty(column.DefaultValue)) { ColumnDefinition rowGuidCol = ScriptFactory.ColumnDefinition(column.Name, column.DefaultValue, column.DefaultName, dataType, column.AllowNulls, column.RowGuid, quoteType); columns.Add(rowGuidCol); } } else { columns.Add(ScriptFactory.ColumnDefinition(column.Name, dataType, column.AllowNulls, quoteType)); } } return(columns); }
public CreateProcedureStatement GenerateInsertStoredProcedure(Table table, QuoteType quoteType = QuoteType.NotQuoted) { Database database = table.Parent; string storedProcedureName = string.Concat("Insert", table.Name); List <ColumnReferenceExpression> columns = new List <ColumnReferenceExpression>(); List <ScalarExpression> scalarExpressions = new List <ScalarExpression>(); List <RowValue> rowValues = new List <RowValue>(); RowValue rowValue = ScriptFactory.RowValue(); rowValues.Add(rowValue); List <ProcedureParameter> parameters = new List <ProcedureParameter>(); foreach (var column in table.Columns) { if (column.IsPrimaryKey()) { continue; } scalarExpressions.Add( ScriptFactory.IdentifierLiteral( CreateProcedureParameterVariableName(column), QuoteType.NotQuoted)); columns.Add( ScriptFactory.ColumnReferenceExpression( ScriptFactory.MultiPartIdentifier( ScriptFactory.Identifier(column.Name, quoteType)))); parameters.Add( ScriptFactory.ProcedureParameter(CreateProcedureParameterVariableName(column), false, GenerateDataTypeReference(SqlDataType.Parse(column.DataType)))); } rowValue.ColumnValues.AddRange(scalarExpressions); StatementList statements = ScriptFactory.List( ScriptFactory.PredicateSet(true, SetOptions.NoCount), ScriptFactory.Insert( ScriptFactory.InsertSpecification( ScriptFactory.ValuesInsertSource(false, rowValues), ScriptFactory.NamedTableReference( GenerateSchemaObjectName(table, quoteType)), null, null, null, InsertOption.Into, columns)), ScriptFactory.Return(ScriptFactory.IntegerLiteral("1"))); return(ScriptFactory.CreateProcedure(false, ScriptFactory.ProcedureReference( GenerateStoredProcedureName(storedProcedureName, table, quoteType)), ScriptFactory.List( ScriptFactory.BeginEndBlock(statements)), null, null, parameters)); }
public static List <ColumnDefinition> CreateColumnDefinitions(Table table, QuoteType quoteType = QuoteType.NotQuoted) { List <ColumnDefinition> columns = new List <ColumnDefinition>(); foreach (var column in table.Columns) { //Debug.Print($"CURRENT COLUMN IS {column.Name} FROM TABLE {column.Parent.Name}"); SqlDataType sqlDataType = SqlDataType.Parse(column.DataType); DataTypeReference dataType = CreateDataTypeReference(sqlDataType); if (column.IsIdentity) { ColumnDefinition columnDef = Factory.IdentityColumn(column.Name, dataType, CreateIdentityOptions(column), quoteType); columns.Add(columnDef); } else { columns.Add(Factory.Column(column.Name, dataType, column.AllowNulls, quoteType)); } } return(columns); }
private static ProcedureParameter CreateProcedureParameter(Column column) { return(ScriptFactory.ProcedureParameter(CreateProcedureParameterVariableName(column), false, GenerateDataTypeReference(SqlDataType.Parse(column.DataType)))); }