using Infrastructure; using Infrastructure.Extensions; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace ZR.CodeGenerator { /// /// 代码生成数据库连接 /// public class DbProvider { protected static SqlSugarClient CodeDb; /// /// 获取动态连接字符串 /// /// 数据库名 /// public SqlSugarClient GetSugarDbContext(string dbName = "") { string connStr = AppSettings.GetConfig(GenConstants.Gen_conn); int dbType = AppSettings.GetAppConfig(GenConstants.Gen_conn_dbType, 0); if (!string.IsNullOrEmpty(dbName)) { string replaceStr = GetValue(connStr, "Database=", ";"); string replaceStr2 = GetValue(connStr, "Initial Catalog=", ";"); if (replaceStr.IsNotEmpty()) { connStr = connStr.Replace(replaceStr, dbName, StringComparison.OrdinalIgnoreCase); } if (replaceStr2.IsNotEmpty()) { connStr = connStr.Replace(replaceStr2, dbName, StringComparison.OrdinalIgnoreCase); } } var db = new SqlSugarClient(new List() { new ConnectionConfig(){ ConnectionString = connStr, DbType = (DbType)dbType, IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样 InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息 }, }); CodeDb = db; return db; } /// /// 获得字符串中开始和结束字符串中间得值 /// /// 字符串 /// 开始 /// 结束 /// public static string GetValue(string str, string s, string e) { Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline); return rg.Match(str).Value; } } }