/// <summary>
        /// Add column to table, create Check and defaults
        /// </summary>
        private void AddColumn(DBTable table, DbTable designerTable, DbColumn designerColumn)
        {
            // column
            DbType   type = DataType.FromDesignerName(designerColumn.Type);
            DBColumn col  = new DBColumn(_db)
            {
                Tabloid      = table,
                Name         = designerColumn.Name,
                IsNullable   = designerColumn.AllowNull,
                MaxLength    = designerColumn.ColumnLengthIsMax ? DataType.MaxLength(type) : designerColumn.ColumnLength,
                Type         = type,
                DefaultValue = designerColumn.RealDefaultValue(type),
                IsUnique     = designerColumn.Unique || designerColumn.Name == DBCommandSet.PrimaryKey
            };

            table.Columns.Add(col);

            // metadata
            ColumnMetadata cm = _app.ColumnMetadata.SingleOrDefault(c => c.TableName == designerTable.Name && c.ColumnName == designerColumn.Name);

            if (cm == null)
            {
                cm = new ColumnMetadata()
                {
                    TableName  = designerTable.Name,
                    ColumnName = designerColumn.Name
                };
                _app.ColumnMetadata.Add(cm);
            }
            cm.ColumnDisplayName = designerColumn.DisplayName ?? designerColumn.Name;
        }
Exemplo n.º 2
0
        public void ModifyInDB(DbColumn column, bool reCreateIndex = true, bool reCreateChecks = true, bool reCreateDefault = true, bool reCreateForeignKeys = true)
        {
            DbType type = DataType.FromDesignerName(column.Type);

            ModifyInDB(new DBColumn(_db)
            {
                Tabloid      = Tabloid,
                Name         = column.Name,
                Type         = type,
                MaxLength    = column.ColumnLengthIsMax ? DataType.MaxLength(type) : column.ColumnLength,
                IsNullable   = column.AllowNull,
                DefaultValue = column.RealDefaultValue(type),
                IsUnique     = column.Unique
            }, reCreateIndex, reCreateChecks, reCreateDefault, reCreateForeignKeys);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Checks check & defaults if changed
        /// </summary>
        public void RefreshConstraints(DBColumn dbColumn, DbColumn designerColumn)
        {
            /// check
            #warning TODO: DbColumn.check

            /// default
            string defaultValue = designerColumn.RealDefaultValue(dbColumn.Type);
            if (string.IsNullOrEmpty(defaultValue) != (dbColumn.DefaultValue == null) || dbColumn.DefaultValue != defaultValue)
            {
                // drop old
                if (dbColumn.DefaultValue != null)
                {
                    _db.Commands.Enqueue(_db.CommandSet.DROP_default(_db, Name, dbColumn.Name));
                }

                // create new
                if (!string.IsNullOrWhiteSpace(defaultValue))
                {
                    _db.Commands.Enqueue(_db.CommandSet.ADD_default(_db, Name, dbColumn.Name, defaultValue));
                }
            }
        }