示例#1
0
        public TableColumn?VisitByteArray(TempTableBuilderCtx arg, bool?isNull, int?length, bool fix)
        {
            var arrayTableColumn = EnsureColumnType <NullableByteArrayTableColumn>(arg);

            if (ReferenceEquals(arrayTableColumn, null))
            {
                return(CreateCol(length));
            }
            else
            {
                if (arrayTableColumn.SqlType.GetSize().HasValue&& (!length.HasValue || length.Value > arrayTableColumn.SqlType.GetSize()))
                {
                    return(CreateCol(length));
                }
                return(arrayTableColumn);
            }

            NullableByteArrayTableColumn CreateCol(int?len)
            {
                return(new NullableByteArrayTableColumn(this.Alias,
                                                        arg.ColumnName,
                                                        this,
                                                        fix
                        ? new ExprTypeFixSizeByteArray(length.AssertNotNull("Length cannot be null for fixed size array"))
                        : new ExprTypeByteArray(length),
                                                        arg.PrimaryKey ? ColumnMeta.PrimaryKey() : null));
            }
        }
示例#2
0
 public TableFk3AB(Alias alias) : base(schema : "dbo", name : "Fk3AB", alias : alias)
 {
     this.Id      = this.CreateInt32Column("Id", ColumnMeta.PrimaryKey());
     this.Parent0 = this.CreateInt32Column("Parent0", ColumnMeta.ForeignKey <TableFk0>(t => t.Id));
     this.ParentA = this.CreateInt32Column("ParentA", ColumnMeta.ForeignKey <TableFk1A>(t => t.Id).ForeignKey <TableFk2AB>(t => t.ParentA));
     this.ParentB = this.CreateInt32Column("ParentB", ColumnMeta.ForeignKey <TableFk1B>(t => t.Id).ForeignKey <TableFk2AB>(t => t.ParentB));
 }
示例#3
0
        internal static void gridView_CellEditorInitialize(TableMeta tableMeta, ASPxGridViewEditorEventArgs e)
        {
            var columnMeta = tableMeta.Columns.SingleOrDefault(c => c.Name.Equals(e.Column.FieldName, System.StringComparison.InvariantCultureIgnoreCase));

            if (columnMeta == null)
            {
                throw new ArgumentException(string.Format("Column meta entry not found for column ", e.Column.FieldName));
            }
            var        sqlDataSource    = e.Editor.DataSource as SqlDataSource;
            ColumnMeta filterColumnMeta = null;

            if (!string.IsNullOrEmpty(columnMeta.FilterColumn))
            {
                filterColumnMeta = columnMeta.ReferenceTable.Columns.SingleOrDefault(c => c.Name.Equals(columnMeta.FilterColumn));
            }
            if (filterColumnMeta != null)
            {
                sqlDataSource.SelectCommand = SqlHelper.AddWhereConditionIfNotExists(sqlDataSource.SelectCommand, filterColumnMeta.Name);
                bool found = false;
                foreach (Parameter parameter in sqlDataSource.SelectParameters)
                {
                    if (parameter.Name.Equals(filterColumnMeta.Name, StringComparison.InvariantCultureIgnoreCase))
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    sqlDataSource.SelectParameters.Add(new Parameter(filterColumnMeta.Name, filterColumnMeta.DataType, e.KeyValue.ToString()));
                }
            }
            e.Editor.DataBind();
        }
示例#4
0
        private ColumnMeta BuildColumnMeta(PropertyInfo pi, Type tp)
        {
            ColumnMeta colMeta = null;

            if (TypeInterrogator.IsNumericType(tp))
            {
                colMeta = new ColumnMeta(pi.Name, DataTypeEnum.NUMERIC, new SqlsvrDTDictionary());
                colMeta.DataType.Precision = 10;
                colMeta.DataType.Scale     = 2;
            }
            else if (TypeInterrogator.IsBoolType(tp))
            {
                colMeta = new ColumnMeta(pi.Name, DataTypeEnum.Bit, new SqlsvrDTDictionary());
            }
            else if (TypeInterrogator.IsDateTimeType(tp))
            {
                colMeta = new ColumnMeta(pi.Name, DataTypeEnum.DATETIME, new SqlsvrDTDictionary());
            }
            else if (TypeInterrogator.IsEnumType(tp))
            {
                colMeta = new ColumnMeta(pi.Name, DataTypeEnum.Int32, new SqlsvrDTDictionary());
                //colMeta.DataType.Scale = 2;
            }
            else if (TypeInterrogator.IsStringType(tp))
            {
                colMeta = new ColumnMeta(pi.Name, DataTypeEnum.AnsiString, new SqlsvrDTDictionary());
                colMeta.DataType.StringLength = 256;
            }

            return(colMeta);
        }
示例#5
0
        void masterGrid_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
        {
            //arf
            GridViewHelper.gridView_CellEditorInitialize(tableMeta, e);
            var gridView   = (sender as ASPxGridView);
            var columnMeta = tableMeta.Columns.SingleOrDefault(c => c.Name.Equals(e.Column.FieldName, System.StringComparison.InvariantCultureIgnoreCase));

            if (columnMeta == null)
            {
                throw new ArgumentException(string.Format("Column meta entry not found for column ", e.Column.FieldName));
            }
            var        sqlDataSource    = e.Editor.DataSource as SqlDataSource;
            ColumnMeta filterColumnMeta = null;

            if (!string.IsNullOrEmpty(columnMeta.FilterColumn))
            {
                filterColumnMeta = columnMeta.ReferenceTable.Columns.SingleOrDefault(c => c.Name.Equals(columnMeta.FilterColumn));
            }
            if (filterColumnMeta != null)
            {
                sqlDataSource.SelectCommand += string.Format("WHERE {0} = @{0}", filterColumnMeta.Name);
                sqlDataSource.SelectParameters.Add(filterColumnMeta.Name, e.KeyValue.ToString());
            }
            e.Editor.DataBind();
        }
示例#6
0
 public static bool Equals(ColumnMeta left, ColumnMeta right, out string column)
 {
     if (left.FieldFullName != right.FieldFullName)
     {
         column = nameof(FieldFullName);
         return(false);
     }
     if (left.Constraint != right.Constraint)
     {
         column = nameof(Constraint);
         return(false);
     }
     if (left.TypeSpec != right.TypeSpec)
     {
         column = nameof(TypeSpec);
         return(false);
     }
     if (left.Tag != right.Tag)
     {
         column = nameof(Tag);
         return(false);
     }
     column = null;
     return(true);
 }
示例#7
0
        public HtmlString RenderOptionGroup(string label, bool isSelectedDate, SelectOption selectOption)
        {
            StringBuilder     sbHtml      = new();
            List <ColumnMeta> columnMetas = isSelectedDate ? columnMetas2 : columnMetas1;

            sbHtml.Append("<optgroup label='").Append(HttpUtility.HtmlEncode(label)).AppendLine("'>");

            for (int i = 0, lastIdx = columnMetas.Count - 1; i <= lastIdx; i++)
            {
                ColumnMeta columnMeta = columnMetas[i];
                bool       isSelected = selectOption == SelectOption.First && i == 0 ||
                                        selectOption == SelectOption.Last && i == lastIdx;
                string optionValue = columnMeta.ShortTime;
                string optionText  = columnMeta.ShortTime;

                if (!isSelectedDate)
                {
                    optionValue += "-1d";
                    optionText  += PluginPhrases.MinusOneDay;
                }

                sbHtml.Append("<option value='").Append(optionValue)
                .Append("' data-time='").Append(columnMeta.UtcTime)
                .Append(isSelected ? "' selected>" : "'>")
                .Append(optionText).AppendLine("</option>");
            }

            sbHtml.AppendLine("</optgroup>");
            return(new HtmlString(sbHtml.ToString()));
        }
示例#8
0
 public TableItOrder(Alias alias) : base(schema : "dbo", name : "ItOrder", alias : alias)
 {
     this.OrderId     = this.CreateInt32Column("OrderId", ColumnMeta.PrimaryKey().Identity());
     this.CustomerId  = this.CreateInt32Column("CustomerId", ColumnMeta.ForeignKey <TableItCustomer>(t => t.CustomerId));
     this.DateCreated = this.CreateDateTimeColumn("DateCreated", false, ColumnMeta.DefaultValue(SqQueryBuilder.GetUtcDate()));
     this.Notes       = this.CreateNullableStringColumn(name: "Notes", size: 100, isUnicode: true, isText: false, columnMeta: null);
 }
示例#9
0
        public TableColumn VisitString(TempTableBuilderCtx arg, bool?isNull, int?size, bool fix)
        {
            var stringTableColumn = EnsureColumnType <NullableStringTableColumn>(arg);

            if (ReferenceEquals(stringTableColumn, null))
            {
                return(CreateString(size));
            }
            else
            {
                if (stringTableColumn.SqlType.GetSize().HasValue&& (!size.HasValue || size.Value > stringTableColumn.SqlType.GetSize()))
                {
                    return(CreateString(size));
                }
                return(stringTableColumn);
            }

            NullableStringTableColumn CreateString(int?len)
            {
                return(new NullableStringTableColumn(this.Alias,
                                                     arg.ColumnName,
                                                     this,
                                                     fix
                        ? new ExprTypeFixSizeString(len.AssertNotNull("Length cannot be null for fixed size string"), true)
                        : new ExprTypeString(len, true, false),
                                                     arg.PrimaryKey ? ColumnMeta.PrimaryKey() : null));
            }
        }
示例#10
0
        public void ColumnMeta_ToString_should_match_name_datatype_property()
        {
            var columnMeta = new ColumnMeta();

            columnMeta.Name     = "Id";
            columnMeta.DataType = TypeCode.Int32;
            Assert.AreEqual(columnMeta.ToString(), "Id: Int32");
        }
示例#11
0
 public TableItCustomer(Alias alias) : base(schema : "dbo", name : "ItCustomer", alias : alias)
 {
     this.CustomerId = this.CreateInt32Column("CustomerId", ColumnMeta.PrimaryKey().Identity());
     this.UserId     = this.CreateNullableInt32Column("UserId", ColumnMeta.ForeignKey <TableItUser>(t => t.UserId));
     this.CompanyId  = this.CreateNullableInt32Column("CompanyId", ColumnMeta.ForeignKey <TableItCompany>(t => t.CompanyId));
     this.AddUniqueIndex(this.UserId, this.CompanyId);
     this.AddUniqueIndex(this.CompanyId, this.UserId);
 }
示例#12
0
        /// <summary>
        /// 设置数据文档的表
        /// </summary>
        /// <param name="document">文档</param>
        /// <param name="table">当前表</param>
        /// <param name="no">当前表编号,从1开始</param>
        public static void SetTableWord(XWPFDocument document, TableMeta table, Int32 no)
        {
            //表名
            XWPFParagraph p = document.CreateParagraph();

            p.Alignment = ParagraphAlignment.LEFT;
            XWPFRun r = p.CreateRun();

            r.SetText($"{no}.{table.TableName}");
            r.FontSize = 14;
            r.IsBold   = true;

            if (!string.IsNullOrEmpty(table.Comment))
            {
                //表注释
                p           = document.CreateParagraph();
                p.Alignment = ParagraphAlignment.LEFT;
                r           = p.CreateRun();
                r.SetText(table.Comment);
                r.FontSize = 14;
                r.IsBold   = true;
            }


            //表格
            XWPFTable grid = document.CreateTable(table.Columns.Count + 1, 5);



            grid.Width = 2500;
            grid.SetColumnWidth(0, 256 * 2);
            grid.SetColumnWidth(1, 256 * 2);
            grid.SetColumnWidth(2, 256 * 1);
            grid.SetColumnWidth(3, 256 * 1);
            grid.SetColumnWidth(4, 256 * 4);



            //设置表头
            XWPFTableRow row = grid.GetRow(0);

            row.GetCell(0).SetParagraph(SetCellText(document, grid, "字段名"));
            row.GetCell(1).SetParagraph(SetCellText(document, grid, "类型"));
            row.GetCell(2).SetParagraph(SetCellText(document, grid, "是否主键"));
            row.GetCell(3).SetParagraph(SetCellText(document, grid, "可为空"));
            row.GetCell(4).SetParagraph(SetCellText(document, grid, "说明"));

            for (int i = 0; i < table.Columns.Count; i++)
            {
                ColumnMeta col = table.Columns[i];
                row = grid.GetRow(i + 1);
                row.GetCell(0).SetParagraph(SetCellText(document, grid, col.ColumnName));
                row.GetCell(1).SetParagraph(SetCellText(document, grid, col.FieldTypeName));
                row.GetCell(2).SetParagraph(SetCellText(document, grid, col.IsKey ? "是" : "否"));
                row.GetCell(3).SetParagraph(SetCellText(document, grid, col.AllowDBNull ? "是" : "否"));
                row.GetCell(4).SetParagraph(SetCellText(document, grid, string.IsNullOrEmpty(col.Comment)?string.Empty:col.Comment));
            }
        }
示例#13
0
 private bool IsNullAllowed(ColumnMeta fldInfo, ref FieldError fldError)
 {
     if (!fldInfo.Nullable)
     {
         fldError.Errors.Add(ErrorType.NonNullValueExpected);
         return(false);
     }
     return(true);
 }
示例#14
0
        public void ColumnMeta_initial_condition_test()
        {
            var columnMeta = new ColumnMeta();

            Assert.AreEqual(columnMeta.DataType, TypeCode.Empty);
            Assert.IsFalse(columnMeta.IsForeignKey);
            Assert.IsFalse(columnMeta.IsPrimaryKey);
            Assert.IsTrue(columnMeta.DisplayInGrid);
        }
示例#15
0
 public TableColumn?VisitXml(TempTableBuilderCtx arg, bool?isNull)
 {
     return(EnsureColumnType <NullableStringTableColumn>(arg) ??
            new NullableStringTableColumn(this.Alias,
                                          arg.ColumnName,
                                          this,
                                          ExprTypeXml.Instance,
                                          arg.PrimaryKey ? ColumnMeta.PrimaryKey() : null));
 }
示例#16
0
        /// <summary>
        /// Returns <see cref="GridViewEditDataColumn"/> instance based on meta data passed in column argument.
        /// </summary>
        /// <param name="column">An instance of <see cref="ColumnMeta"/> containing meta data of column to be created.</param>
        /// <param name="connectionString">Connection string to underlying database.</param>
        /// <returns></returns>
        internal static GridViewEditDataColumn AddGridViewDataColumn(ColumnMeta column, string connectionString)
        {
            GridViewEditDataColumn dataColumn = null;

            // As per 11 Oct 2016, the following evaluation criteria for data type and its column editor are not yet complete.
            // We still has some works to do to deal with picture and blob/document. (--github.com/ganagus)
            // ---
            if ((new TypeCode[] { TypeCode.String, TypeCode.Int64, TypeCode.Int32, TypeCode.Single, TypeCode.Decimal })
                .Contains(column.DataType) && !column.IsForeignKey && string.IsNullOrEmpty(column.EnumTypeName))
            {
                // regular text column, editor => text box
                dataColumn = AddGridViewDataTextColumn(column, dataColumn);
            }
            else if (!string.IsNullOrEmpty(column.EnumTypeName))
            {
                // enum data type column, editor => check box
                dataColumn = AddGridViewEnumColumn(column, dataColumn);
            }
            // foreign key should be rendered in combo box column
            else if (column.IsForeignKey)
            {
                // foreign key column, it's a look up to other table, editor => combo box
                dataColumn = AddGridViewForeignKeyColumn(column, dataColumn, connectionString);
            }
            else if (column.DataType == TypeCode.DateTime)
            {
                // date / datetime column, editor => DevExpress date editor
                dataColumn = new GridViewDataDateColumn();
                if (column.Name.ToLower() == "createddate" || column.Name.ToLower() == "modifieddate")
                {
                    //hide createdby, createddate, modifiedby, modifieddate from edit form
                    //dataColumn.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False;
                }
            }
            else if (column.DataType == TypeCode.Boolean)
            {
                // boolean column, editor => check box
                dataColumn = new GridViewDataCheckColumn();
            }
            else
            {
                // other data type, default to text box
                dataColumn = new GridViewDataTextColumn();
            }

            if (column.IsIdentity)
            {
                dataColumn.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False;
            }

            dataColumn.FieldName    = column.Name;
            dataColumn.Caption      = column.Caption;
            dataColumn.VisibleIndex = column.OrderNo;

            return(dataColumn);
        }
示例#17
0
        public TableCompany(Alias alias) : base("dbo", "Company", alias)
        {
            this.CompanyId   = this.CreateInt32Column(nameof(this.CompanyId), ColumnMeta.PrimaryKey().Identity());
            this.CompanyName = this.CreateStringColumn(nameof(this.CompanyName), 250);

            this.Version = this.CreateInt32Column("Version",
                                                  ColumnMeta.DefaultValue(0));
            this.ModifiedAt = this.CreateDateTimeColumn("ModifiedAt",
                                                        columnMeta: ColumnMeta.DefaultValue(SqQueryBuilder.GetUtcDate()));
        }
示例#18
0
 public TableFavoriteFilterItem(Alias alias = default) : base("dbo", "FavoriteFilterItem", alias)
 {
     this.FavoriteFilterId = CreateInt32Column(nameof(this.FavoriteFilterId), ColumnMeta.ForeignKey <TableFavoriteFilter>(t => t.FavoriteFilterId));
     this.Id         = CreateInt32Column(nameof(Id));
     this.ParentId   = CreateInt32Column(nameof(ParentId));
     this.ArrayIndex = CreateNullableInt32Column(nameof(ArrayIndex));
     this.IsTypeTag  = CreateBooleanColumn(nameof(IsTypeTag));
     this.Tag        = CreateStringColumn(nameof(Tag), 255);
     this.Value      = CreateNullableStringColumn(nameof(Value), null);
 }
示例#19
0
        public TableCustomer(Alias alias) : base("dbo", "Customer", alias)
        {
            this.CustomerId = this.CreateInt32Column(nameof(this.CustomerId), ColumnMeta.PrimaryKey().Identity());
            this.UserId     = this.CreateNullableInt32Column(nameof(this.UserId), ColumnMeta.ForeignKey <TableUser>(u => u.UserId));
            this.CompanyId  = this.CreateNullableInt32Column(nameof(this.CompanyId), ColumnMeta.ForeignKey <TableCompany>(u => u.CompanyId));

            //Indexes
            this.AddUniqueIndex(this.UserId, this.CompanyId);
            this.AddUniqueIndex(this.CompanyId, this.UserId);
        }
示例#20
0
        public ColumnMetaCollection GetTableSchema(string table)
        {
            Dictionary <string, string> comments   = GetColumnComment(table);
            ColumnMetaCollection        metas      = new ColumnMetaCollection();
            MySqlConnection             connection = new MySqlConnection(this.ConnectionString);

            connection.Open();



            MySqlCommand cmd = new MySqlCommand("select * from " + table + " limit 0,1", connection);

            using (MySqlDataReader ddr = cmd.ExecuteReader(CommandBehavior.KeyInfo | CommandBehavior.CloseConnection))
            {
                if (ddr != null && !ddr.IsClosed)
                {
                    //得元数据
                    DataTable dt = ddr.GetSchemaTable();
                    for (int i = 0, len = dt.Rows.Count; i < len; i++)
                    {
                        ColumnMeta columnMeta = new ColumnMeta();

                        columnMeta.ColumnName     = dt.Rows[i][0].ToString();
                        columnMeta.ColumnOridinal = TypeConverter.ObjectToInt(dt.Rows[i][1], 0);
                        columnMeta.ColumnSize     = TypeConverter.ObjectToInt(dt.Rows[i][2], 4);
                        columnMeta.IsUnique       = TypeConverter.ObjectToBool(dt.Rows[i][5], false);
                        columnMeta.IsKey          = TypeConverter.ObjectToBool(dt.Rows[i][6], false);

                        columnMeta.FieldType     = (Type)dt.Rows[i][11];
                        columnMeta.FieldTypeName = columnMeta.FieldType.Name;
                        columnMeta.AllowDBNull   = TypeConverter.ObjectToBool(dt.Rows[i][12], true);
                        if (comments.ContainsKey(columnMeta.ColumnName))
                        {
                            columnMeta.Comment = comments[columnMeta.ColumnName];
                            if (!string.IsNullOrEmpty(columnMeta.Comment))
                            {
                                columnMeta.Comment = columnMeta.Comment.Replace("\r", "").Replace("\n", "");
                            }
                        }



                        if (dt.Rows[i][0].ToString().IndexOf(" ") > -1)
                        {
                            continue;
                        }

                        metas.Add(columnMeta);
                    }
                }
            }

            connection.Close();
            return(metas);
        }
示例#21
0
 public User(Alias alias) : base("dbo", "user", alias)
 {
     this.UserId    = this.CreateInt32Column("UserId", ColumnMeta.Identity());
     this.FirstName = this.CreateStringColumn("FirstName", 255);
     this.LastName  = this.CreateStringColumn("LastName", 255);
     this.Email     = this.CreateStringColumn("Email", 255);
     this.RegDate   = this.CreateDateTimeColumn("RegDate");
     this.Version   = this.CreateInt32Column("Version");
     this.Created   = this.CreateDateTimeColumn("Created");
     this.Modified  = this.CreateDateTimeColumn("Modified");
 }
示例#22
0
        public PersistanceColumnInfo(EntityPropertyMeta propertyMeta, ColumnMeta columnMeta, PersistanceTableInfo table)
        {
            _propertyMeta = propertyMeta;
            _columnMeta   = columnMeta;
            this.Table    = table;

            this.DataType     = propertyMeta.PropertyType;
            this.IsIdentity   = columnMeta.IsIdentity;
            this.IsPrimaryKey = columnMeta.IsPrimaryKey;
            this.Property     = propertyMeta.ManagedProperty as IProperty;
        }
示例#23
0
 public TableItCompany(Alias alias) : base(schema : "dbo", name : "ItCompany", alias : alias)
 {
     this.CompanyId   = this.CreateInt32Column("CompanyId", ColumnMeta.PrimaryKey().Identity());
     this.ExternalId  = this.CreateGuidColumn("ExternalId", null);
     this.CompanyName = this.CreateStringColumn(name: "CompanyName", size: 250, isUnicode: false, isText: false, columnMeta: null);
     this.Version     = this.CreateInt32Column("Version", null);
     this.Created     = this.CreateDateTimeColumn("Created", false, null);
     this.Modified    = this.CreateDateTimeColumn("Modified", false, null);
     this.AddUniqueIndex(this.ExternalId);
     this.AddIndex(this.CompanyName);
 }
示例#24
0
        public TableUser(Alias alias) : base("dbo", "User", alias)
        {
            this.UserId    = this.CreateInt32Column("UserId", ColumnMeta.PrimaryKey().Identity());
            this.FirstName = this.CreateStringColumn("FirstName", size: 255, isUnicode: true);
            this.LastName  = this.CreateStringColumn("LastName", size: 255, isUnicode: true);

            this.Version = this.CreateInt32Column("Version",
                                                  ColumnMeta.DefaultValue(0));
            this.ModifiedAt = this.CreateDateTimeColumn("ModifiedAt",
                                                        columnMeta: ColumnMeta.DefaultValue(SqQueryBuilder.GetUtcDate()));
        }
示例#25
0
        public ColumnMetaCollection GetTableSchema(string table)
        {
            ColumnMetaCollection metas      = new ColumnMetaCollection();
            SqlConnection        connection = new SqlConnection(this.ConnectionString);

            connection.Open();

            SqlCommand cmd = new SqlCommand("select * from " + table, connection);

            using (SqlDataReader ddr = cmd.ExecuteReader(CommandBehavior.KeyInfo))
            {
                if (ddr != null && !ddr.IsClosed)
                {
                    //得元数据
                    DataTable dt = ddr.GetSchemaTable();

                    //StringBuilder builder = new StringBuilder();
                    for (int i = 0, len = dt.Rows.Count; i < len; i++)
                    {
                        //for (int offset = 0; offset < dt.Columns.Count; offset++)
                        //{
                        //    builder.AppendLine(dt.Columns[offset].ColumnName+"=>(index:"+offset+")=>"+dt.Rows[i][offset]);
                        //}


                        ColumnMeta columnMeta = new ColumnMeta();

                        columnMeta.ColumnName     = dt.Rows[i][0].ToString();
                        columnMeta.ColumnOridinal = TypeConverter.ObjectToInt(dt.Rows[i][1], 0);
                        columnMeta.ColumnSize     = TypeConverter.ObjectToInt(dt.Rows[i][2], 4);
                        columnMeta.IsUnique       = TypeConverter.ObjectToBool(dt.Rows[i][5], false);
                        columnMeta.IsKey          = TypeConverter.ObjectToBool(dt.Rows[i][6], false);


                        columnMeta.FieldTypeName = ((Type)dt.Rows[i][12]).Name;
                        columnMeta.FieldType     = (Type)dt.Rows[i][12];
                        columnMeta.AllowDBNull   = TypeConverter.ObjectToBool(dt.Rows[i][13], true);



                        if (dt.Rows[i][0].ToString().IndexOf(" ") > -1)
                        {
                            continue;
                        }

                        metas.Add(columnMeta);
                    }

                    //File.WriteAllText("d:\\struct.txt", builder.ToString());
                }
            }
            return(metas);
        }
示例#26
0
 private bool HandleNullValue(ColumnMeta fldInfo, ref object colValue, ref FieldError fldError)
 {
     if (!IsNullAllowed(fldInfo, ref fldError))
     {
         return(false);
     }
     else
     {
         colValue = null;
         return(true);
     }
 }
示例#27
0
        protected TableMeta BuildTable(TableDef tableDefTmp,
                                       ref ArrayList indexList,
                                       ref ArrayList primaryKeyList,
                                       ref ArrayList uniqkeyList,
                                       ref ArrayList foreignKeyList,
                                       ref StringBuilder strRowDataSql,
                                       ref ArrayList colAlterList)
        {
            DDLActionEnum tblAction = ValidateVersion(tableDefTmp);

            if (tblAction == DDLActionEnum.NONE)        // not in range!
            {
                return(null);
            }

            TableMeta tableMetaTmp = new TableMeta(tableDefTmp.Name, _context);

            ColumnCollection columns = tableDefTmp.Columns;

            foreach (Column col in columns)
            {
                ColumnMeta colMeta = new ColumnMeta(col.ColumnName, col.DataType, _dtMap);
                colMeta.Default  = col.ExplicitDefaultValue;
                colMeta.Nullable = col.IsNullable;                      // more...
                colMeta.DataType.StringLength = col.MaxStringLength;

                if (tblAction == DDLActionEnum.MODIFY)
                {
                    DDLActionEnum colAlterAction = ValidateVersion(col);
                    if (colAlterAction != DDLActionEnum.NONE)
                    {
                        ColumnAlter colAlterTmp = new ColumnAlter(tableMetaTmp, colMeta);
                        colAlterTmp.AlterAction = (int)colAlterAction;
                        colAlterList.Add(colAlterTmp);
                    }
                }

                tableMetaTmp.ColMetaList.Add(colMeta);
            }

            BuildIndexAndConstraints(tableDefTmp, tableMetaTmp, ref indexList,
                                     ref primaryKeyList, ref uniqkeyList, ref foreignKeyList);

            strRowDataSql.Append(TableRowSQLBuilder.BuildInsertLine(tableDefTmp.TableRows, tableMetaTmp, _LowVersion, _HighVersion));

            if (tblAction == DDLActionEnum.MODIFY)      // do not build a new table
            {
                tableMetaTmp = null;
            }

            return(tableMetaTmp);
        }
示例#28
0
        /// <summary>
        /// Renders a combo box grid view column representing enumeration values.
        /// TODO: this code still does not work, need more effort. (github.com/ganagus).
        /// </summary>
        /// <param name="column">Meta data about column, an instance of <see cref="ColumnMeta"/>.</param>
        /// <param name="dataColumn">An instance of <see cref="GridViewEditDataColumn"/>.</param>
        /// <returns>An instance of <see cref="GridViewDataComboBoxColumn"/>.</returns>
        private static GridViewEditDataColumn AddGridViewEnumColumn(ColumnMeta column, GridViewEditDataColumn dataColumn)
        {
            var enumType = Type.GetType(column.EnumTypeName);

            if (enumType.IsEnum)
            {
                var comboBoxColumn = new GridViewDataComboBoxColumn();
                comboBoxColumn.PropertiesComboBox.ValueType  = enumType;
                comboBoxColumn.PropertiesComboBox.DataSource = Enum.GetValues(enumType);
                dataColumn = comboBoxColumn;
            }
            return(dataColumn);
        }
示例#29
0
        private ColumnMeta ToColumnMeta(Guid id, ColumnDTO cm)
        {
            var result = new ColumnMeta
            {
                Id            = Guid.NewGuid(),
                Text          = cm.ColumnMetaDTO.Text,
                ValueText     = cm.ColumnMetaDTO.ValueText,
                IsRequired    = cm.ColumnMetaDTO.IsRequired,
                OrderId       = cm.ColumnMetaDTO.OrderId,
                ColumnBlockId = id
            };

            return(result);
        }
示例#30
0
        private bool CheckMaxSize(ColumnMeta fldInfo, string stringValueConverted, ref FieldError fldError)
        {
            if (string.IsNullOrEmpty(stringValueConverted))
            {
                return(true);
            }

            if (stringValueConverted.Length > fldInfo.DataType.StringLength)
            {
                fldError.Errors.Add(ErrorType.ExceedsColumnSize);
                return(false);
            }

            return(true);
        }
示例#31
0
 protected PlanPart()
 {
     Columns = new ColumnMeta[0];
     Children = new PlanPart[0];
 }