/// <summary> /// 设置列的映射 /// </summary> /// <param name="selector">执行当前实体某属性</param> /// <param name="action">指定对该列的操作</param> /// <param name="columnName">列名</param> /// <param name="allowNull">是否允许为空</param> /// <returns>列信息设置器</returns> public IColumnSetter Map(Expression <Func <TEntity, object> > selector, ColumnAction action = ColumnAction.InsertAndEdit, string columnName = null, bool?allowNull = null) { //获取并检查属性 PropertyInfo property = selector.Body.GetProperty(); if (!Check.IsCanMapping(property)) { throw new Exception(string.Format("Can not map property {0}", property.Name)); } //获取列名 if (string.IsNullOrEmpty(columnName)) { columnName = _columnNameGetter.GetColumnName(property.Name); } //创建ColumnMapper ColumnMapper columnMapper = new ColumnMapper(property) { ColumnAction = action, ColumnName = columnName, AllowNull = allowNull != null ? allowNull.Value : this.GetAllowNull(action) }; //指定columnMapper this._columnMappers[property.Name] = columnMapper; //饭hi列属性设置器 return(new ColumnSetter(columnMapper)); }
/// <summary> /// Generate SQL code to alter table /// </summary> /// <param name="table">Table object</param> /// <param name="columnAction">Alteration kind</param> /// <param name="field">Field object</param> /// <returns>SQL code</returns> public override string AlterTableColumnSQL(InTable table, ColumnAction columnAction, InField field) { string code = "ALTER TABLE " + AsFieldName(table.Name); switch (columnAction) { case ColumnAction.Remove: code += " DROP COLUMN " + AsFieldName(field.Name); break; case ColumnAction.Recreate: code += " DROP COLUMN " + AsFieldName(field.Name); code += ", "; code += " ADD COLUMN " + AsFieldName(field.Name) + " " + GetSqlType(field); break; case ColumnAction.Insert: code += " ADD COLUMN " + AsFieldName(field.Name) + " " + GetSqlType(field); break; case ColumnAction.ChangeType: code += " ALTER COLUMN " + AsFieldName(field.Name) + " TYPE " + GetSqlType(field); break; default: code = null; break; } return code; }
public void ForeEach(ColumnAction action, bool onlyVisible = false) { foreach (var col in this) { if (!col.Visible && onlyVisible) { continue; } action(col); } }
/// <summary> /// 获取该列是否允许为空 /// </summary> /// <param name="columnAction">列的操作</param> /// <returns>该列是否允许为空</returns> private bool GetAllowNull(ColumnAction columnAction) { switch (columnAction) { //主键列,以及只允许Insert时赋值的列不允许为空 case ColumnAction.Insert: case ColumnAction.PrimaryAndInsert: case ColumnAction.PrimaryAndIdentity: return(false); //其他类型的列都允许为空 default: return(true); } }
public ColumnAction ColumnAction(Color?penColor, int lineWidth = 1, Color?fillColor = null, int type = 0, dynamic Element = null) { if (penColor == null) { penColor = Colors.Black; } var a = new ColumnAction(); a.Geometry.Element = Element; a.Geometry.PenColor = penColor.Value; a.Geometry.LineWidth = lineWidth; (a.Geometry as ColumnGeometry).ColumnType = type; if (fillColor != null) { a.Geometry.FillColor = fillColor.Value; } DrawingControl.SetAction(a); LastAction = a; return(a); }
public ImageButtonColumn <ENTITY> ToPerformAction(ColumnAction action) { _action = action.ToString(); return(this); }
public Column(string name, string type, ColumnAction columnAction = ColumnAction.None) { Name = name; Type = type; ColumnAction = columnAction; }
public LinkColumn <ENTITY> ToPerformAction(ColumnAction action) { _action = action.ToString(); return(this); }