diff --git a/Infrastructure/OptionsSetting.cs b/Infrastructure/OptionsSetting.cs index 5654154..160ced5 100644 --- a/Infrastructure/OptionsSetting.cs +++ b/Infrastructure/OptionsSetting.cs @@ -80,10 +80,7 @@ namespace Infrastructure public class Gen { - public string Conn { get; set; } - public int DbType { get; set; } public string Database { get; set; } - } public class DbConfigs @@ -92,5 +89,10 @@ namespace Infrastructure public int DbType { get; set; } public string ConfigId { get; set; } public bool IsAutoCloseConnection { get; set; } + /// + /// 是否代码生成使用库 + /// + public bool IsGenerateDb { get; set; } + public string DbName { get; set; } } } diff --git a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs index 0c65c48..5aabe55 100644 --- a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs +++ b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs @@ -2,6 +2,7 @@ using Infrastructure.Attribute; using Infrastructure.Enums; using Infrastructure.Extensions; +using IP2Region.Ex.Models; using Mapster; using Microsoft.AspNetCore.Mvc; using SqlSugar; @@ -230,8 +231,9 @@ namespace ZR.Admin.WebApi.Controllers throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空"); } var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId); + var dbConfig = AppSettings.Get>("dbConfigs").FirstOrDefault(f => f.IsGenerateDb); - dto.DbType = AppSettings.GetAppConfig("gen:dbType", 0); + dto.DbType = dbConfig.DbType; dto.GenTable = genTableInfo; dto.IsPreview = true; //生成代码 @@ -255,8 +257,9 @@ namespace ZR.Admin.WebApi.Controllers throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空"); } var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId); + var dbConfig = AppSettings.Get>("dbConfigs").FirstOrDefault(f => f.IsGenerateDb); - dto.DbType = AppSettings.GetAppConfig("gen:dbType", 0); + dto.DbType = dbConfig.DbType; dto.GenTable = genTableInfo; //自定义路径 if (genTableInfo.GenType == "1") diff --git a/ZR.Admin.WebApi/Extensions/DbExtension.cs b/ZR.Admin.WebApi/Extensions/DbExtension.cs index 455a650..e9d7641 100644 --- a/ZR.Admin.WebApi/Extensions/DbExtension.cs +++ b/ZR.Admin.WebApi/Extensions/DbExtension.cs @@ -35,7 +35,7 @@ namespace ZR.Admin.WebApi.Extensions List dbConfigs = Configuration.GetSection("DbConfigs").Get>(); var iocList = new List(); - foreach (var item in dbConfigs) + foreach (var item in dbConfigs.FindAll(f => !f.IsGenerateDb)) { iocList.Add(new IocConfig() { diff --git a/ZR.Admin.WebApi/appsettings.json b/ZR.Admin.WebApi/appsettings.json index c9aa223..3f35065 100644 --- a/ZR.Admin.WebApi/appsettings.json +++ b/ZR.Admin.WebApi/appsettings.json @@ -12,6 +12,14 @@ "DbType": 1, //数据库类型 MySql = 0, SqlServer = 1, Oracle = 3,PgSql = 4 "ConfigId": "0", //多租户唯一标识 "IsAutoCloseConnection": true + }, + { + "Conn": "Data Source=LAPTOP-STKF2M8H\\SQLEXPRESS;User ID=admin;Password=admin123;Initial Catalog={dbName};", + "DbType": 1, + "ConfigId": "0", + "IsAutoCloseConnection": true, + "DbName": "ZrAdmin",//代码生成默认连接数据库 + "IsGenerateDb": true //是否代码生成使用库,不要改动 } //...下面添加更多的数据库源 ], @@ -50,13 +58,10 @@ }, //代码生成配置 "gen": { - "conn": "Data Source=LAPTOP-STKF2M8H\\SQLEXPRESS;User ID=admin;Password=admin123;Initial Catalog=ZrAdmin;", - "dbType": 1, //MySql = 0, SqlServer = 1 "autoPre": true, //自动去除表前缀 "author": "admin", "tablePrefix": "sys_", //"表前缀(生成类名不会包含表前缀,多个用逗号分隔)", - "vuePath": "", //前端代码存储路径eg:D:\Work\ZRAdmin-Vue3 - "oracle_db": "" + "vuePath": "" //前端代码存储路径eg:D:\Work\ZRAdmin-Vue3 }, //邮箱配置信息 "MailOptions": { diff --git a/ZR.CodeGenerator/DbProvider.cs b/ZR.CodeGenerator/DbProvider.cs index 0696d62..afbff3d 100644 --- a/ZR.CodeGenerator/DbProvider.cs +++ b/ZR.CodeGenerator/DbProvider.cs @@ -1,5 +1,4 @@ using Infrastructure; -using Infrastructure.Extensions; using SqlSugar; using System; using System.Collections.Generic; @@ -21,27 +20,22 @@ namespace ZR.CodeGenerator /// public SqlSugarClient GetSugarDbContext(string dbName = "") { - Gen options = new(); - AppSettings.Bind("gen", options); - string connStr = options.Conn; + List dbConfigs = AppSettings.Get>("dbConfigs"); + + DbConfigs configs = dbConfigs.Find(f => f.IsGenerateDb == true); + string connStr = configs.Conn; + if (!string.IsNullOrEmpty(dbName)) { - string replaceStr = GetValue(options.Conn, "Database=", ";"); - string replaceStr2 = GetValue(options.Conn, "Initial Catalog=", ";"); - if (replaceStr.IsNotEmpty()) - { - connStr = options.Conn.Replace(replaceStr, dbName, StringComparison.OrdinalIgnoreCase); - } - if (replaceStr2.IsNotEmpty()) - { - connStr = options.Conn.Replace(replaceStr2, dbName, StringComparison.OrdinalIgnoreCase); - } + configs.DbName = dbName; } + connStr = connStr.Replace("{dbName}", configs.DbName, StringComparison.OrdinalIgnoreCase); + var db = new SqlSugarClient(new List() { new ConnectionConfig(){ ConnectionString = connStr, - DbType = (DbType)options.DbType, + DbType = (DbType)configs.DbType, IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样 InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息 }, diff --git a/ZR.CodeGenerator/GenConstants.cs b/ZR.CodeGenerator/GenConstants.cs index e7bfc94..057cc2f 100644 --- a/ZR.CodeGenerator/GenConstants.cs +++ b/ZR.CodeGenerator/GenConstants.cs @@ -7,12 +7,10 @@ namespace ZR.CodeGenerator /// public class GenConstants { - public static string Gen_conn = "gen:conn"; public static string Gen_conn_dbType = "gen:dbType"; public static string Gen_author = "gen:author"; public static string Gen_autoPre = "gen:autoPre"; public static string Gen_tablePrefix = "gen:tablePrefix"; - public static string Gen_oracle_db = "gen:oracle_db"; /// /// InputDto输入实体是不包含字段 diff --git a/ZR.CodeGenerator/Service/CodeGeneraterService.cs b/ZR.CodeGenerator/Service/CodeGeneraterService.cs index fd82340..95f44c6 100644 --- a/ZR.CodeGenerator/Service/CodeGeneraterService.cs +++ b/ZR.CodeGenerator/Service/CodeGeneraterService.cs @@ -16,15 +16,15 @@ namespace ZR.CodeGenerator.Service { var db = GetSugarDbContext(); //Oracle库特殊处理 - var dbType = AppSettings.GetAppConfig(GenConstants.Gen_conn_dbType, 0); - if (dbType == 3) + List dbConfigs = AppSettings.Get>("dbConfigs"); + DbConfigs configs = dbConfigs.Find(f => f.IsGenerateDb == true); + if (configs.DbType == 3) { - var defaultDb = AppSettings.GetAppConfig(GenConstants.Gen_oracle_db, string.Empty); - return new List() { defaultDb }; + return new List() { configs?.DbName }; } var templist = db.DbMaintenance.GetDataBaseList(db); - return templist; + return templist.FindAll(f => !f.Contains("schema")); } ///