//using Furion; //using Mapster; //using Microsoft.Extensions.Hosting; //using SqlSugar; //using System; //using System.Collections.Generic; //using System.Linq; //namespace WIDESEA.Common //{ // /// // /// 数据库上下文对象 // /// // public static class SqlSugarDbContext // { // /// // /// 读取配置文件中的 ConnectionStrings:Sqlsugar 配置节点 // /// // public static readonly List DbConfigs = App.GetConfig>("SqlSugarSettings:ConnectionStrings"); // /// // /// SqlSugar 数据库实例 // /// // public static readonly SqlSugarScope Db = new( // DbConfigs.Adapt>() // , db => // { // //遍历配置的数据库 // DbConfigs.ForEach(it => // { // var sqlsugarScope = db.GetConnectionScope(it.ConfigId);//获取当前库 // MoreSetting(sqlsugarScope);//更多设置 // ExternalServicesSetting(sqlsugarScope, it);//实体拓展配置 // AopSetting(sqlsugarScope);//aop配置 // FilterSetting(sqlsugarScope);//过滤器配置 // }); // }); // /// // /// 实体拓展配置,自定义类型多库兼容 // /// // /// // /// // private static void ExternalServicesSetting(SqlSugarScopeProvider db, SqlSugarConfig config) // { // db.CurrentConnectionConfig.ConfigureExternalServices = new ConfigureExternalServices // { // // 处理表 // EntityNameService = (type, entity) => // { // if (config.IsUnderLine && !entity.DbTableName.Contains('_')) // entity.DbTableName = UtilMethods.ToUnderLine(entity.DbTableName); // 驼峰转下划线 // }, // //自定义类型多库兼容 // EntityService = (c, p) => // { // //如果是mysql并且是varchar(max) 已弃用 // //if (config.DbType == SqlSugar.DbType.MySql && (p.DataType == SqlsugarConst.NVarCharMax)) // //{ // // p.DataType = SqlsugarConst.LongText;//转成mysql的longtext // //} // //else if (config.DbType == SqlSugar.DbType.Sqlite && (p.DataType == SqlsugarConst.NVarCharMax)) // //{ // // p.DataType = SqlsugarConst.Text;//转成sqlite的text // //} // //默认不写IsNullable为非必填 // //if (new NullabilityInfoContext().Create(c).WriteState is NullabilityState.Nullable) // // p.IsNullable = true; // if (config.IsUnderLine && !p.IsIgnore && !p.DbColumnName.Contains('_')) // p.DbColumnName = UtilMethods.ToUnderLine(p.DbColumnName); // 驼峰转下划线 // } // }; // } // /// // /// Aop设置 // /// // /// // public static void AopSetting(SqlSugarScopeProvider db) // { // var config = db.CurrentConnectionConfig; // // 设置超时时间 // db.Ado.CommandTimeOut = 30; // // 打印SQL语句 // db.Aop.OnLogExecuting = (sql, pars) => // { // //如果不是开发环境就打印sql // if (App.HostEnvironment.IsDevelopment()) // { // if (sql.StartsWith("SELECT")) // { // Console.ForegroundColor = ConsoleColor.Green; // WriteSqlLog($"查询{config.ConfigId}库操作"); // } // if (sql.StartsWith("UPDATE") || sql.StartsWith("INSERT")) // { // Console.ForegroundColor = ConsoleColor.Blue; // WriteSqlLog($"修改{config.ConfigId}库操作"); // } // if (sql.StartsWith("DELETE")) // { // Console.ForegroundColor = ConsoleColor.Red; // WriteSqlLog($"删除{config.ConfigId}库操作"); // } // Console.WriteLine(UtilMethods.GetSqlString(config.DbType, sql, pars)); // WriteSqlLog($"{config.ConfigId}库操作结束"); // Console.ForegroundColor = ConsoleColor.White; // Console.WriteLine(); // } // }; // //异常 // db.Aop.OnError = (ex) => // { // //如果不是开发环境就打印日志 // if (App.WebHostEnvironment.IsDevelopment()) // { // if (ex.Parametres == null) return; // Console.ForegroundColor = ConsoleColor.Red; // var pars = db.Utilities.SerializeObject(((SugarParameter[])ex.Parametres).ToDictionary(it => it.ParameterName, it => it.Value)); // WriteSqlLog($"{config.ConfigId}库操作异常"); // Console.WriteLine(UtilMethods.GetSqlString(config.DbType, ex.Sql, (SugarParameter[])ex.Parametres) + "\r\n"); // Console.ForegroundColor = ConsoleColor.White; // } // }; // } // /// // /// 实体更多配置 // /// // /// // private static void MoreSetting(SqlSugarScopeProvider db) // { // db.CurrentConnectionConfig.MoreSettings = new ConnMoreSettings // { // SqlServerCodeFirstNvarchar = true,//设置默认nvarchar // }; // } // /// // /// 过滤器设置 // /// // /// // public static void FilterSetting(SqlSugarScopeProvider db) // { // // 假删除过滤器 // //LogicDeletedEntityFilter(db); // } // /// // /// 假删除过滤器 // /// // /// // private static void LogicDeletedEntityFilter(SqlSugarScopeProvider db) // { // } // private static void WriteSqlLog(string msg) // { // Console.WriteLine($"=============={msg}=============="); // } // } //}