// Admin.NET 项目的版æƒã€å•†æ ‡ã€ä¸“利和其他相关æƒåˆ©å‡å—ç›¸åº”æ³•å¾‹æ³•è§„çš„ä¿æŠ¤ã€‚ä½¿ç”¨æœ¬é¡¹ç›®åº”éµå®ˆç›¸å…³æ³•律法规和许å¯è¯çš„è¦æ±‚。 // // 本项目主è¦éµå¾ª MIT 许å¯è¯å’Œ Apache 许å¯è¯ï¼ˆç‰ˆæœ¬ 2.0)进行分å‘和使用。许å¯è¯ä½äºŽæºä»£ç æ ‘æ ¹ç›®å½•ä¸çš„ LICENSE-MIT å’Œ LICENSE-APACHE 文件。 // // ä¸å¾—利用本项目从事å±å®³å›½å®¶å®‰å…¨ã€æ‰°ä¹±ç¤¾ä¼šç§©åºã€ä¾µçŠ¯ä»–äººåˆæ³•æƒç›Šç‰æ³•å¾‹æ³•è§„ç¦æ¢çš„æ´»åЍï¼ä»»ä½•基于本项目二次开å‘è€Œäº§ç”Ÿçš„ä¸€åˆ‡æ³•å¾‹çº çº·å’Œè´£ä»»ï¼Œæˆ‘ä»¬ä¸æ‰¿æ‹…ä»»ä½•è´£ä»»ï¼ using DbType = SqlSugar.DbType; namespace Admin.NET.Core; /// <summary> /// 代ç 生æˆå¸®åŠ©ç±» /// </summary> public static class CodeGenUtil { /// <summary> /// 转æ¢å¤§é©¼å³°æ³•命å /// </summary> /// <param name="columnName">å—æ®µå</param> /// <param name="dbColumnNames">EntityBase 实体属性åç§°</param> /// <returns></returns> public static string CamelColumnName(string columnName, string[] dbColumnNames) { if (columnName.Contains('_')) { var arrColName = columnName.Split('_'); var sb = new StringBuilder(); foreach (var col in arrColName) { if (col.Length > 0) sb.Append(col[..1].ToUpper() + col[1..].ToLower()); } columnName = sb.ToString(); } else { var propertyName = dbColumnNames.FirstOrDefault(c => c.ToLower() == columnName.ToLower()); if (!string.IsNullOrEmpty(propertyName)) { columnName = propertyName; } else { columnName = columnName[..1].ToUpper() + columnName[1..].ToLower(); } } return columnName; } // æ ¹æ®æ•°æ®åº“类型æ¥å¤„ç†å¯¹åº”的数æ®å—段类型 public static string ConvertDataType(DbColumnInfo dbColumnInfo, DbType dbType = DbType.Custom) { if (dbType == DbType.Custom) dbType = App.GetOptions<DbConnectionOptions>().ConnectionConfigs[0].DbType; var dataType = dbType switch { DbType.Oracle => ConvertDataType_OracleSQL(string.IsNullOrEmpty(dbColumnInfo.OracleDataType) ? dbColumnInfo.DataType : dbColumnInfo.OracleDataType, dbColumnInfo.Length, dbColumnInfo.Scale), DbType.PostgreSQL => ConvertDataType_PostgreSQL(dbColumnInfo.DataType), _ => ConvertDataType_Default(dbColumnInfo.DataType), }; return dataType + (dbColumnInfo.IsNullable ? "?" : ""); } public static string ConvertDataType_OracleSQL(string dataType, int? length, int? scale) { switch (dataType.ToLower()) { case "interval year to month": return "int"; case "interval day to second": return "TimeSpan"; case "smallint": return "Int16"; case "int": case "integer": return "int"; case "long": return "long"; case "float": return "float"; case "decimal": return "decimal"; case "number": if (length != null) { if (scale != null && scale > 0) { return "decimal"; } else if ((scale != null && scale == 0) || scale == null) { if (length > 1 && length < 12) { return "int"; } else if (length > 11) { return "long"; } } if (length == 1) { return "bool"; } } return "decimal"; case "char": case "clob": case "nclob": case "nchar": case "nvarchar": case "varchar": case "nvarchar2": case "varchar2": case "rowid": return "string"; case "timestamp": case "timestamp with time zone": case "timestamptz": case "timestamp without time zone": case "date": case "time": case "time with time zone": case "timetz": case "time without time zone": return "DateTime"; case "bfile": case "blob": case "raw": return "byte[]"; default: return "object"; } } //PostgreSQLæ•°æ®ç±»åž‹å¯¹åº”çš„å—æ®µç±»åž‹ public static string ConvertDataType_PostgreSQL(string dataType) { switch (dataType) { case "int2": case "smallint": return "Int16"; case "int4": case "integer": return "int"; case "int8": case "bigint": return "long"; case "float4": case "real": return "float"; case "float8": case "double precision": return "double"; case "numeric": case "decimal": case "path": case "point": case "polygon": case "interval": case "lseg": case "macaddr": case "money": return "decimal"; case "boolean": case "bool": case "box": case "bytea": return "bool"; case "varchar": case "character varying": case "geometry": case "name": case "text": case "char": case "character": case "cidr": case "circle": case "tsquery": case "tsvector": case "txid_snapshot": case "xml": case "json": return "string"; case "uuid": return "Guid"; case "timestamp": case "timestamp with time zone": case "timestamptz": case "timestamp without time zone": case "date": case "time": case "time with time zone": case "timetz": case "time without time zone": return "DateTime"; case "bit": case "bit varying": return "byte[]"; case "varbit": return "byte"; default: return "object"; } } public static string ConvertDataType_Default(string dataType) { return dataType.ToLower() switch { "tinytext" or "mediumtext" or "longtext" or "mid" or "text" or "varchar" or "char" or "nvarchar" or "nchar" or "timestamp" => "string", "int" or "integer" => "int", "smallint" => "Int16", //"tinyint" => "byte", "tinyint" => "bool", // MYSQL "bigint" => "long", "bit" => "bool", "money" or "smallmoney" or "numeric" or "decimal" => "decimal", "real" => "Single", "datetime" or "datetime2" or "smalldatetime" => "DateTime", "float" or "double" => "double", "image" or "binary" or "varbinary" => "byte[]", "uniqueidentifier" => "Guid", _ => "object", }; } /// <summary> /// æ•°æ®ç±»åž‹è½¬æ˜¾ç¤ºç±»åž‹ /// </summary> /// <param name="dataType"></param> /// <returns></returns> public static string DataTypeToEff(string dataType) { if (string.IsNullOrEmpty(dataType)) return ""; return dataType?.TrimEnd('?') switch { "string" => "Input", "int" => "InputNumber", "long" => "Input", "float" => "Input", "double" => "Input", "decimal" => "Input", "bool" => "Switch", "Guid" => "Input", "DateTime" => "DatePicker", _ => "Input", }; } // 是å¦é€šç”¨å—段 public static bool IsCommonColumn(string columnName) { var columnList = new List<string>() { nameof(EntityBaseData.CreateOrgId), nameof(EntityBaseData.CreateOrgName), nameof(EntityTenant.TenantId), nameof(EntityBase.CreateTime), nameof(EntityBase.UpdateTime), nameof(EntityBase.CreateUserId), nameof(EntityBase.UpdateUserId), nameof(EntityBase.CreateUserName), nameof(EntityBase.UpdateUserName), nameof(EntityBase.IsDelete) }; return columnList.Contains(columnName); } }