Ver código fonte

代码生成功能,扩展PostgreSQL对应的数据类型

kenny 4 anos atrás
pai
commit
3d47c83202

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/CodeGen/CodeGenConfigService.cs

@@ -107,7 +107,7 @@ public class CodeGenConfigService : IDynamicApiController, ITransient
             codeGenConfig.CodeGenId = codeGenerate.Id;
             codeGenConfig.ColumnName = tableColumn.ColumnName;
             codeGenConfig.ColumnComment = tableColumn.ColumnComment;
-            codeGenConfig.NetType = CodeGenUtil.ConvertDataType(tableColumn.DataType);
+            codeGenConfig.NetType = CodeGenUtil.ConvertDataType(tableColumn.DataType, App.GetOptions<ConnectionStringsOptions>().DefaultDbType);
             codeGenConfig.WhetherRetract = YesNoEnum.N.ToString();
 
             codeGenConfig.WhetherRequired = YesNoEnum.N.ToString();

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/CodeGen/CodeGenService.cs

@@ -177,7 +177,7 @@ public class CodeGenService : IDynamicApiController, ITransient
             ColumnName = u.DbColumnName,
             ColumnKey = u.IsPrimarykey.ToString(),
             DataType = u.DataType.ToString(),
-            NetType = CodeGenUtil.ConvertDataType(u.DataType.ToString()),
+            NetType = CodeGenUtil.ConvertDataType(u.DataType.ToString(), App.GetOptions<ConnectionStringsOptions>().DefaultDbType),
             ColumnComment = u.ColumnDescription
         }).ToList();
     }

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/CustomViewEngine.cs

@@ -68,7 +68,7 @@ public class CustomViewEngine : ViewEngineModel
             ColumnName = u.DbColumnName,
             ColumnKey = u.IsPrimarykey.ToString(),
             DataType = u.DataType.ToString(),
-            NetType = CodeGenUtil.ConvertDataType(u.DataType.ToString()),
+            NetType = CodeGenUtil.ConvertDataType(u.DataType.ToString(), App.GetOptions<ConnectionStringsOptions>().DefaultDbType),
             ColumnComment = u.ColumnDescription
         }).ToList();
     }

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/DataBase/DataBaseManager.cs

@@ -193,7 +193,7 @@ public class DataBaseManager : IDynamicApiController, ITransient
         }
         dbColumnInfos.ForEach(m =>
         {
-            m.DataType = CodeGenUtil.ConvertDataType(m.DataType);
+            m.DataType = CodeGenUtil.ConvertDataType(m.DataType, App.GetOptions<ConnectionStringsOptions>().DefaultDbType);
         });
         var tContent = File.ReadAllText(templatePath);
         var tResult = _viewEngine.RunCompileFromCached(tContent, new

+ 86 - 0
Admin.NET/Admin.NET.Core/Util/CodeGenUtil.cs

@@ -5,6 +5,92 @@
 /// </summary>
 public static class CodeGenUtil
 {
+    //根据数据库类型来处理对应的数据字段类型
+    public static string ConvertDataType(string dataType, string DbType)
+    {
+        switch (DbType)
+        {
+            case "PostgreSQL":
+                return ConvertDataType_PostgreSQL(dataType);
+            default:
+                return ConvertDataType(dataType);
+        }
+    }
+    //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";
+            case "public.geometry":
+            case "inet":
+                return "object";
+            default:
+                return "object";
+        }
+    }
+
     public static string ConvertDataType(string dataType)
     {
         switch (dataType)