Esempio n. 1
0
        private static void FillColumn(TreeNode tableNode, DatabaseColumn column)
        {
            var sb = new StringBuilder();

            sb.Append(column.Name);
            sb.Append(" ");
            sb.Append(column.DbDataType);
            if (column.DataType != null)
            {
                if (column.DataType.IsString && !column.DataType.IsStringClob)
                {
                    sb.Append("(");
                    var length = column.Length.GetValueOrDefault();
                    sb.Append(length != -1 ? length.ToString(CultureInfo.InvariantCulture) : "MAX");
                    sb.Append(")");
                }
                else if (column.DataType.IsNumeric && !column.DataType.IsInt)
                {
                    sb.Append("(");
                    sb.Append(column.Precision);
                    sb.Append(",");
                    sb.Append(column.Scale);
                    sb.Append(")");
                }
            }
            if (!column.Nullable)
            {
                sb.Append(" NOT NULL");
            }
            if (column.IsPrimaryKey)
            {
                sb.Append(" PK");
            }
            if (column.IsIdentity)
            {
                sb.Append(" Identity");
                if (column.IsNonTrivialIdentity())
                {
                    sb.Append('(');
                    sb.Append(column.IdentitySeed);
                    sb.Append(',');
                    sb.Append(column.IdentityIncrement);
                    sb.Append(')');
                }
            }
            if (column.IsForeignKey)
            {
                sb.Append(" FK to " + column.ForeignKeyTableName);
            }
            var colNode = new TreeNode(sb.ToString());

            if (!(column.Table is DatabaseView))
            {
                colNode.Tag         = column;
                colNode.ToolTipText = RightClickToScript;
            }
            tableNode.Nodes.Add(colNode);
        }
Esempio n. 2
0
        protected override string WriteDataType(DatabaseColumn column)
        {
            var defaultValue = string.Empty;

            if (!string.IsNullOrEmpty(column.DefaultValue))
            {
                defaultValue = WriteDefaultValue(column);
            }

            var sql = DataTypeWriter.WriteDataType(column);

            if (sql == "BIT")
            {
                _hasBit = true;
            }

            if (column.IsIdentity)
            {
                bool isLong = column.DataType != null && column.DataType.GetNetType() == typeof(long);
                // Non trivial identities are hooked to a sequence up by AutoIncrementWriter.
                // Newer postgres versions require specifying UNIQUE explicitly.
                if (column.IsNonTrivialIdentity())
                {
                    sql = (isLong ? " BIGINT" : " INT") + " NOT NULL UNIQUE";
                }
                else
                {
                    sql = isLong ? " BIGSERIAL" : " SERIAL";
                }
            }
            else
            {
                if (column.IsPrimaryKey)
                {
                    sql += " NOT NULL";
                }
                else
                {
                    sql += " " + (!column.Nullable ? " NOT NULL" : string.Empty) + defaultValue;
                }
            }
            return(sql);
        }