Esempio n. 1
0
        protected override ISqlNode OnChildNode(ISqlNode node)
        {
            if (node is TableColumnNode)
                Column = (TableColumnNode) node;

            return base.OnChildNode(node);
        }
Esempio n. 2
0
        protected override ISqlNode OnChildNode(ISqlNode node)
        {
            if (node is TableColumnNode)
            {
                Column = (TableColumnNode)node;
            }

            return(base.OnChildNode(node));
        }
Esempio n. 3
0
        private static SqlTableColumn BuildColumnInfo(ITypeResolver typeResolver, string tableName, TableColumnNode column, IList<SqlTableConstraint> constraints)
        {
            var dataTypeBuilder = new DataTypeBuilder();
            var dataType = dataTypeBuilder.Build(typeResolver, column.DataType);

            var columnInfo = new SqlTableColumn(column.ColumnName.Text, dataType);

            if (column.Default != null)
                columnInfo.DefaultExpression = ExpressionBuilder.Build(column.Default);

            if (column.IsIdentity) {
                columnInfo.DefaultExpression = SqlExpression.FunctionCall("UNIQUEKEY",
                    new[] { SqlExpression.Constant(tableName) });
            }

            foreach (var constraint in column.Constraints) {
                if (String.Equals(ConstraintTypeNames.Check, constraint.ConstraintType, StringComparison.OrdinalIgnoreCase)) {
                    var exp = ExpressionBuilder.Build(constraint.CheckExpression);
                    constraints.Add(SqlTableConstraint.Check(null, exp));
                } else if (String.Equals(ConstraintTypeNames.ForeignKey, constraint.ConstraintType, StringComparison.OrdinalIgnoreCase)) {
                    var fTable = constraint.ReferencedTable.Name;
                    var fColumn = constraint.ReferencedColumn.Text;
                    var onDelete = ForeignKeyAction.NoAction;
                    var onUpdate = ForeignKeyAction.NoAction;

                    if (!String.IsNullOrEmpty(constraint.OnDeleteAction))
                        onDelete = GetForeignKeyAction(constraint.OnDeleteAction);
                    if (!String.IsNullOrEmpty(constraint.OnUpdateAction))
                        onUpdate = GetForeignKeyAction(constraint.OnUpdateAction);

                    constraints.Add(SqlTableConstraint.ForeignKey(null, new[]{column.ColumnName.Text}, fTable, new[]{fColumn}, onDelete, onUpdate));
                } else if (String.Equals(ConstraintTypeNames.PrimaryKey, constraint.ConstraintType, StringComparison.OrdinalIgnoreCase)) {
                    constraints.Add(SqlTableConstraint.PrimaryKey(null, new[]{column.ColumnName.Text}));
                } else if (String.Equals(ConstraintTypeNames.UniqueKey, constraint.ConstraintType, StringComparison.OrdinalIgnoreCase)) {
                    constraints.Add(SqlTableConstraint.UniqueKey(null, new[]{column.ColumnName.Text}));
                } else if (String.Equals(ConstraintTypeNames.NotNull, constraint.ConstraintType, StringComparison.OrdinalIgnoreCase)) {
                    columnInfo.IsNotNull = true;
                } else if (String.Equals(ConstraintTypeNames.Null, constraint.ConstraintType, StringComparison.OrdinalIgnoreCase)) {
                    columnInfo.IsNotNull = false;
                }
            }

            return columnInfo;
        }