Esempio n. 1
0
        /// <summary>
        /// 生成验证
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="column">列</param>
        /// <returns></returns>
        private static string GenerateFluentValidationProperty(string tableName, DbTableColumn column)
        {
            var sb        = new StringBuilder();
            var sbMessage = new StringBuilder();

            if (!column.Comment.IsNullOrWhiteSpace())
            {
                sb.AppendLine("\t\t\t// " + column.Comment);
                sbMessage.Append(column.Comment);
            }
            else
            {
                sb.AppendLine("\t\t\t// " + column.ColName);
                sbMessage.Append(column.ColName);
            }
            sb.Append($"\t\t\tRuleFor(x => x.{column.ColName})");
            if (!column.IsNullable)
            {
                sb.Append($".NotEmpty()");
                sbMessage.Append("不能为空");
            }

            if (column.ColumnLength.HasValue && column.ColumnLength.Value > 0 && column.CSharpType.ToLower() == "string")
            {
                sb.Append($".MaximumLength({column.ColumnLength.Value})");
                sbMessage.Append($"且最大长度不能超过{column.ColumnLength.Value}");
            }
            sb.Append($".WithMessage(\"{ sbMessage.ToString()}\");");
            return(sb.ToString());
        }
        private string GenerateEntityProperty(DbTableColumn column)
        {
            var sb = new StringBuilder();

            if (!string.IsNullOrEmpty(column.Comments))
            {
                sb.AppendLine("\t\t/// <summary>");
                sb.AppendLine("\t\t/// " + column.Comments);
                sb.AppendLine("\t\t/// </summary>");
            }
            if (column.IsPrimaryKey)
            {
                sb.AppendLine("\t\t[Key]");
                sb.AppendLine($"\t\t[Column(\"{column.ColName}\")]");
                if (column.IsIdentity)
                {
                    sb.AppendLine("\t\t[DatabaseGenerated(DatabaseGeneratedOption.Identity)]");
                }
                sb.AppendLine($"\t\tpublic override {column.CSharpType} Id " + "{get;set;}");
            }
            else
            {
                if (Option.IsPascalCase)
                {
                    sb.AppendLine($"\t\t[Column(\"{column.ColName}\")]");
                }
                if (!column.IsNullable)
                {
                    sb.AppendLine("\t\t[Required]");
                }

                var colType = column.CSharpType;
                if (colType.ToLower() == "string" && column.ColumnLength.HasValue && column.ColumnLength.Value > 0)
                {
                    sb.AppendLine($"\t\t[MaxLength({column.ColumnLength.Value})]");
                }
                if (column.IsIdentity)
                {
                    sb.AppendLine("\t\t[DatabaseGenerated(DatabaseGeneratedOption.Identity)]");
                }

                if (colType.ToLower() != "string" && colType.ToLower() != "byte[]" && colType.ToLower() != "object" &&
                    column.IsNullable)
                {
                    colType = colType + "?";
                }

                sb.AppendLine($"\t\tpublic {colType} {(Option.IsPascalCase?column.ColName.ToPascalCase():column.ColName)} " + "{get;set;}");
            }

            return(sb.ToString());
        }
Esempio n. 3
0
 public bool TryGetDbTableColumn(RdbDescriptor database, string tableColumnId, out DbTableColumn dbTableColumn)
 {
     if (!_initialized)
     {
         Init();
     }
     if (!_dicById.ContainsKey(database))
     {
         dbTableColumn = null;
         return false;
     }
     return _dicById[database].TryGetValue(tableColumnId, out dbTableColumn);
 }
Esempio n. 4
0
        /// <summary>
        /// 生成属性
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="column">列</param>
        /// <returns></returns>
        private static string GenerateEntityProperty(string tableName, DbTableColumn column)
        {
            var sb = new StringBuilder();

            if (!string.IsNullOrEmpty(column.Comment))
            {
                sb.AppendLine("\t\t/// <summary>");
                sb.AppendLine("\t\t/// " + column.Comment);
                sb.AppendLine("\t\t/// </summary>");
            }

            if (column.IsPrimaryKey)
            {
                sb.AppendLine("\t\t[Key]");
                //if (column.IsIdentity)
                //{
                //    sb.AppendLine("\t\t[DatabaseGenerated(DatabaseGeneratedOption.Identity)]");
                //}
                sb.AppendLine($"\t\tpublic {column.CSharpType} Id " + "{get;set;}");
            }
            else
            {
                if (!column.IsNullable)
                {
                    sb.AppendLine("\t\t[Required]");
                }

                if (column.ColumnLength.HasValue && column.ColumnLength.Value > 0)
                {
                    sb.AppendLine($"\t\t[MaxLength({column.ColumnLength.Value})]");
                }
                //if (column.IsIdentity)
                //{
                //    sb.AppendLine("\t\t[DatabaseGenerated(DatabaseGeneratedOption.Identity)]");
                //}

                var colType = column.CSharpType;
                if (colType.ToLower() != "string" && colType.ToLower() != "byte[]" && colType.ToLower() != "object" &&
                    column.IsNullable)
                {
                    colType = colType + "?";
                }

                sb.AppendLine($"\t\tpublic {colType} {column.ColName} " + "{get;set;}");
            }

            return(sb.ToString());
        }
Esempio n. 5
0
        /// <summary>
        /// 生成属性
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="column">列</param>
        /// <returns></returns>
        private static string GenerateEntityProperty(DbTableColumn column)
        {
            var sb = new StringBuilder();

            if (!column.Comment.IsNullOrWhiteSpace())
            {
                sb.AppendLine("\t\t/// <summary>");
                sb.AppendLine("\t\t/// " + column.Comment);
                sb.AppendLine("\t\t/// </summary>");
            }
            var colType = column.CSharpType;

            if (colType.ToLower() != "string" && colType.ToLower() != "byte[]" && colType.ToLower() != "object" &&
                column.IsNullable)
            {
                colType = colType + "?";
            }
            sb.AppendLine($"\t\tpublic {colType} {column.ColName} " + "{get;set;}");
            return(sb.ToString());
        }
Esempio n. 6
0
        /// <summary>
        /// 生成实体的属性
        /// </summary>
        /// <param name="column">列</param>
        private static string GenerateEntityProperty(DbTableColumn column)
        {
            var sb = new StringBuilder();

            if (!column.Comment.IsNullOrWhiteSpace())
            {
                sb.AppendLine("\t\t///<summary>");
                sb.AppendLine($"\t\t{column.Comment}");
                sb.AppendLine("\t\t///</summary>");
            }
            if (column.IsPrimaryKey)
            {
                sb.AppendLine("\t\t[Key]");
                sb.AppendLine($"\t\tpublic {column.CSharpType} Id " + "{get;set;}");
            }
            else
            {
                if (!column.IsNullable)
                {
                    sb.AppendLine("\t\t[Required]");
                }
                if (column.ColumnLength.HasValue && column.ColumnLength.Value > 0)
                {
                    sb.AppendLine($"\t\t[MaxLength({column.ColumnLength.Value})]");
                }
                var colType = column.CSharpType;
                //var type = System.Type.GetType(colType);//获取Type
                //if (column.IsNullable && type != null && type.IsNullType())//判断列是否可空&&属性对应的c#类型是可空类型
                if (colType.ToLower() != "string" && colType.ToLower() != "byte[]" && colType.ToLower() != "object" &&
                    column.IsNullable)
                {
                    colType += "?";
                }
                sb.AppendLine($"\t\tpublic {colType} {column.ColName}" + "{get;set;}");
            }
            return(sb.ToString());
        }
Esempio n. 7
0
        public List <DbTableColumn> Columns(string table, ApiCall call)
        {
            var db = Kooboo.Data.DB.GetKDatabase(call.Context.WebSite);

            var dbTable = Kooboo.Data.DB.GetTable(db, table);

            List <DbTableColumn> result = new List <DbTableColumn>();

            if (dbTable == null)
            {
                return(result);
            }

            foreach (var item in dbTable.Setting.Columns)
            {
                if (item.IsSystem && item.Name == IndexedDB.Dynamic.Constants.DefaultIdFieldName)
                {
                    continue;
                }


                DbTableColumn model = new DbTableColumn()
                {
                    Name = item.Name, IsIncremental = item.IsIncremental, IsUnique = item.IsUnique, IsIndex = item.IsIndex, IsPrimaryKey = item.IsPrimaryKey, Seed = item.Seed, Scale = item.Increment, IsSystem = item.IsSystem
                };

                model.DataType = DatabaseColumnHelper.ToFrontEndDataType(item.ClrType);

                model.ControlType = item.ControlType;
                model.Setting     = item.Setting;

                model.Length = item.Length;

                result.Add(model);
            }
            return(result);
        }
Esempio n. 8
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="col"></param>
 public ElementDataSchema(DbTableColumn col)
 {
     this.IsNullable = col.IsNullable;
     this.TypeName   = col.TypeName;
     this.MaxLength  = col.MaxLength;
 }
Esempio n. 9
0
        public static List <DbTable> FromDB(string dbName)
        {
            var tables            = new List <DbTable>();
            var dicReferenceTable = new Dictionary <string, List <Reference> >();

            var server = new Microsoft.SqlServer.Management.Smo.Server(serverName);
            var db     = new Microsoft.SqlServer.Management.Smo.Database(server, dbName);

            db.Refresh();
            foreach (Microsoft.SqlServer.Management.Smo.Table table in db.Tables)
            {
                table.Refresh();

                var dic = new Dictionary <string, string>();

                foreach (Microsoft.SqlServer.Management.Smo.ForeignKey item in table.ForeignKeys)
                {
                    dic.Add(item.Columns[0].Name, item.ReferencedTable);

                    if (dicReferenceTable.ContainsKey(item.ReferencedTable) == false)
                    {
                        dicReferenceTable.Add(item.ReferencedTable, new List <Reference>());
                    }

                    dicReferenceTable[item.ReferencedTable].Add(new Reference()
                    {
                        PropertyName       = table.Name + item.Columns[0].Name,
                        ReferenceTableName = table.Name
                    });
                }

                var indexes     = GetIndexes(table);
                var foreignKeys = GetForeignKey(table);

                var columns            = new List <DbTableColumn>();
                var requiredMaxLengths = new List <RequiredMaxLength>();
                var defaultValues      = new List <DefaultValue>();
                var hasColumnTypes     = new List <HasColumnType>();

                foreach (Microsoft.SqlServer.Management.Smo.Column item in table.Columns)
                {
                    var propertyType = _typeMapping[item.DataType.Name];
                    if (item.Nullable == true && propertyType != "string")
                    {
                        propertyType = propertyType + "?";
                    }

                    var entityProperty = new DbTableColumn()
                    {
                        DataType     = propertyType,
                        ColumnName   = item.Name,
                        IsForeignKey = item.IsForeignKey,
                        IsPrimaryKey = item.InPrimaryKey,
                        IsIdentity   = item.Identity
                    };
                    if (item.IsForeignKey == true)
                    {
                        entityProperty.ForeignKeyTableName = dic[item.Name];
                    }
                    columns.Add(entityProperty);

                    //hascolumntype
                    if (entityProperty.DataType == "System.DateTime" ||
                        entityProperty.DataType == "System.TimeSpan")
                    {
                        hasColumnTypes.Add(new HasColumnType()
                        {
                            PropertyName = item.Name,
                            TypeName     = item.DataType.Name + "(" + item.DataType.NumericScale + ")"
                        });
                    }
                    else if (item.DataType.Name == "decimal" || item.DataType.Name == "numeric")
                    {
                        hasColumnTypes.Add(new HasColumnType()
                        {
                            PropertyName = item.Name,
                            TypeName     = item.DataType.Name + "(" + item.DataType.NumericPrecision + "," + item.DataType.NumericScale + ")"
                        });
                    }

                    //requiredmaxlength
                    var requiredMaxLength = new RequiredMaxLength()
                    {
                        PropertyName = item.Name, MaxLength = -1
                    };
                    if (item.Nullable == false && propertyType == "string")
                    {
                        requiredMaxLength.NeedIsRequired = true;
                    }
                    if (propertyType == "string" || propertyType == "byte[]")
                    {
                        requiredMaxLength.MaxLength = item.DataType.MaximumLength;
                    }
                    if (requiredMaxLength.NeedIsRequired == true || requiredMaxLength.MaxLength > 0)
                    {
                        requiredMaxLengths.Add(requiredMaxLength);
                    }

                    //defaultvalue
                    if (item.DefaultConstraint != null)
                    {
                        defaultValues.Add(new DefaultValue()
                        {
                            PropertyName = item.Name,
                            Value        = item.DefaultConstraint.Text
                        });
                    }
                }

                tables.Add(new DbTable()
                {
                    TableName          = table.Name,
                    Columns            = new ObservableCollection <DbTableColumn>(columns),
                    ForeignKeys        = new ObservableCollection <ForeignKey>(foreignKeys),
                    Indexes            = new ObservableCollection <Index>(indexes),
                    RequiredMaxLengths = new ObservableCollection <RequiredMaxLength>(requiredMaxLengths),
                    DefaultValues      = new ObservableCollection <DefaultValue>(defaultValues),
                    HasColumnTypes     = new ObservableCollection <HasColumnType>(hasColumnTypes)
                });
            }

            foreach (var table in tables)
            {
                List <Reference> reference;
                if (dicReferenceTable.TryGetValue(table.TableName, out reference) == true)
                {
                    table.ReferencesToThisTable = new ObservableCollection <Reference>(reference);
                }
            }
            return(tables);
        }
Esempio n. 10
0
 public bool TryGetDbTableColumn(RdbDescriptor database, string tableColumnId, out DbTableColumn dbTableColumn)
 {
     if (!_initialized)
     {
         Init();
     }
     if (!_dicById.ContainsKey(database))
     {
         dbTableColumn = null;
         return(false);
     }
     return(_dicById[database].TryGetValue(tableColumnId, out dbTableColumn));
 }
Esempio n. 11
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="col"></param>
 public ElementDataSchema(DbTableColumn col)
 {
     this.IsNullable = col.IsNullable;
     this.TypeName = col.TypeName;
     this.MaxLength = col.MaxLength;
 }