Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
        /// <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;
        }
Esempio n. 3
0
 public void ForeEach(ColumnAction action, bool onlyVisible = false)
 {
     foreach (var col in this)
     {
         if (!col.Visible && onlyVisible)
         {
             continue;
         }
         action(col);
     }
 }
Esempio n. 4
0
        /// <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);
            }
        }
Esempio n. 5
0
        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);
 }
Esempio n. 7
0
 public Column(string name, string type, ColumnAction columnAction = ColumnAction.None)
 {
     Name = name;
     Type = type;
     ColumnAction = columnAction;
 }
Esempio n. 8
0
 public LinkColumn <ENTITY> ToPerformAction(ColumnAction action)
 {
     _action = action.ToString();
     return(this);
 }