/// <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; }
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); }
/// <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)); } } }