コード例 #1
0
        protected override string WriteDataType(DatabaseColumn column)
        {
            var sql = DataTypeWriter.WriteDataType(column);

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

            var defaultValue = string.Empty;

            if (!string.IsNullOrEmpty(column.DefaultValue))
            {
                var value = FixDefaultValue(column.DefaultValue);
                if (_hasBit)
                {
                    //Access Yes/No boolean
                    if (value.Equals("No", StringComparison.OrdinalIgnoreCase))
                    {
                        value = "0";
                    }
                    if (value.Equals("Yes", StringComparison.OrdinalIgnoreCase))
                    {
                        value = "1";
                    }
                }

                const string defaultConstraint = "DEFAULT ";
                if (IsStringColumn(column))
                {
                    defaultValue = defaultConstraint + "'" + value + "'";
                }
                else //numeric default
                {
                    defaultValue = defaultConstraint + value;
                }
            }

            if (DataTypeWriter.LooksLikeOracleIdentityColumn(Table, column))
            {
                column.IsIdentity = true;
            }
            if (column.IsIdentity)
            {
                sql += " IDENTITY(" + column.IdentitySeed + "," + column.IdentityIncrement + ")";
            }
            if (column.IsPrimaryKey)
            {
                sql += " NOT NULL";
            }
            else
            {
                sql += " " + (!column.Nullable ? " NOT NULL" : string.Empty) + " " + defaultValue;
            }
            return(sql);
        }
コード例 #2
0
        protected override string WriteDataType(DatabaseColumn column)
        {
            if (HandleComputed(column))
            {
                return("AS " + column.ComputedDefinition);
            }

            var sql = DataTypeWriter.WriteDataType(column);

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

            var defaultValue = string.Empty;

            if (!string.IsNullOrEmpty(column.DefaultValue) && IncludeDefaultValues)
            {
                var value = FixDefaultValue(column.DefaultValue);
                if (_hasBit)
                {
                    //Access Yes/No boolean
                    if (value.Equals("No", StringComparison.OrdinalIgnoreCase))
                    {
                        value = "0";
                    }
                    if (value.Equals("Yes", StringComparison.OrdinalIgnoreCase))
                    {
                        value = "1";
                    }
                }
                if (value.StartsWith("(NEXT VALUE FOR ", StringComparison.OrdinalIgnoreCase) && !SupportsNextValueForSequence)
                {
                    //SQLServer 2012 "NEXT VALUE FOR [Sequence]". Allow it to be turned back to identity.
                    column.IsAutoNumber       = true;
                    column.IdentityDefinition = new DatabaseColumnIdentity();
                    value = null;
                }
                //strings should already have the single quotes in place
                if (!string.IsNullOrEmpty(value))
                {
                    defaultValue = "DEFAULT " + value;
                }
            }

            if (DataTypeWriter.LooksLikeOracleIdentityColumn(Table, column))
            {
                column.IsAutoNumber       = true;
                column.IdentityDefinition = new DatabaseColumnIdentity();
            }
            if (column.IdentityDefinition != null)
            {
                var id = column.IdentityDefinition;
                sql += " IDENTITY(" + id.IdentitySeed + "," + id.IdentityIncrement + ")";
            }
            if (column.IsPrimaryKey)
            {
                sql += " NOT NULL";
                if (!string.IsNullOrEmpty(defaultValue))
                {
                    sql += " " + defaultValue;
                }
            }
            else
            {
                sql += " " + (!column.Nullable ? " NOT NULL" : string.Empty) + " " + defaultValue;
            }
            return(sql);
        }