/// <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()); }
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); }
/// <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()); }
/// <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()); }
/// <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()); }
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); }
/// <summary> /// /// </summary> /// <param name="col"></param> public ElementDataSchema(DbTableColumn col) { this.IsNullable = col.IsNullable; this.TypeName = col.TypeName; this.MaxLength = col.MaxLength; }
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); }
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)); }