Browse Source

😁修改多库之间数据库类型转换

zuohuaijun 2 years ago
parent
commit
2531678ced

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

@@ -77,7 +77,7 @@ public class CustomViewEngine : ViewEngineModel
             ColumnName = u.DbColumnName,
             ColumnKey = u.IsPrimarykey.ToString(),
             DataType = u.DataType.ToString(),
-            NetType = CodeGenUtil.ConvertDataType(u),
+            NetType = CodeGenUtil.ConvertDataType(u, provider.CurrentConnectionConfig.DbType),
             ColumnComment = u.ColumnDescription
         }).ToList();
     }

+ 3 - 3
Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs

@@ -186,7 +186,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
             ColumnName = config.EnableUnderLine ? CodeGenUtil.CamelColumnName(u.DbColumnName, entityBasePropertyNames) : u.DbColumnName,
             ColumnKey = u.IsPrimarykey.ToString(),
             DataType = u.DataType.ToString(),
-            NetType = CodeGenUtil.ConvertDataType(u),
+            NetType = CodeGenUtil.ConvertDataType(u, provider.CurrentConnectionConfig.DbType),
             ColumnComment = u.ColumnDescription
         }).ToList();
     }
@@ -212,8 +212,8 @@ public class SysCodeGenService : IDynamicApiController, ITransient
             //转下划线后的列名 需要转回来
             ColumnName = config.EnableUnderLine ? CodeGenUtil.CamelColumnName(u.DbColumnName, entityBasePropertyNames) : u.DbColumnName,
             ColumnKey = u.IsPrimarykey.ToString(),
-            NetType = CodeGenUtil.ConvertDataType(u),
-            DataType = CodeGenUtil.ConvertDataType(u),
+            NetType = CodeGenUtil.ConvertDataType(u, provider.CurrentConnectionConfig.DbType),
+            DataType = CodeGenUtil.ConvertDataType(u, provider.CurrentConnectionConfig.DbType),
             ColumnComment = string.IsNullOrWhiteSpace(u.ColumnDescription) ? u.DbColumnName : u.ColumnDescription
         }).ToList();
     }

+ 4 - 4
Admin.NET/Admin.NET.Core/Service/DataBase/SysDatabaseService.cs

@@ -207,7 +207,7 @@ public class SysDatabaseService : IDynamicApiController, ITransient
         input.Position = string.IsNullOrWhiteSpace(input.Position) ? "Admin.NET.Application" : input.Position;
         input.EntityName = string.IsNullOrWhiteSpace(input.EntityName) ? (config.EnableUnderLine ? CodeGenUtil.CamelColumnName(input.TableName, null) : input.TableName) : input.EntityName;
 
-        string[] dbColumnNames;//= _codeGenOptions.EntityBaseColumn[input.BaseClassName];
+        string[] dbColumnNames; // = _codeGenOptions.EntityBaseColumn[input.BaseClassName];
         _codeGenOptions.EntityBaseColumn.TryGetValue(input.BaseClassName, out dbColumnNames);
         if (dbColumnNames is null || dbColumnNames is { Length: 0 })
             throw Oops.Oh("基类配置文件不存在此类型");
@@ -220,10 +220,10 @@ public class SysDatabaseService : IDynamicApiController, ITransient
             throw Oops.Oh(ErrorCodeEnum.db1001);
 
         List<DbColumnInfo> dbColumnInfos = db.DbMaintenance.GetColumnInfosByTableName(input.TableName, false);
-        dbColumnInfos.ForEach(m =>
+        dbColumnInfos.ForEach(u =>
         {
-            m.DbColumnName = config.EnableUnderLine ? CodeGenUtil.CamelColumnName(m.DbColumnName, dbColumnNames) : m.DbColumnName;//转下划线后的列名 需要转回来
-            m.DataType = CodeGenUtil.ConvertDataType(m);
+            u.DbColumnName = config.EnableUnderLine ? CodeGenUtil.CamelColumnName(u.DbColumnName, dbColumnNames) : u.DbColumnName; // 转下划线后的列名需要转回来
+            u.DataType = CodeGenUtil.ConvertDataType(u, config.DbType);
         });
         if (_codeGenOptions.BaseEntityNames.Contains(input.BaseClassName, StringComparer.OrdinalIgnoreCase))
             dbColumnInfos = dbColumnInfos.Where(c => !dbColumnNames.Contains(c.DbColumnName, StringComparer.OrdinalIgnoreCase)).ToList();

+ 4 - 2
Admin.NET/Admin.NET.Core/Util/CodeGenUtil.cs

@@ -51,9 +51,11 @@ public static class CodeGenUtil
     }
 
     // 根据数据库类型来处理对应的数据字段类型
-    public static string ConvertDataType(DbColumnInfo dbColumnInfo)
+    public static string ConvertDataType(DbColumnInfo dbColumnInfo, DbType dbType = DbType.Custom)
     {
-        var dbType = App.GetOptions<DbConnectionOptions>().ConnectionConfigs[0].DbType;
+        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),