//using DS.Module.Core; //using DS.Module.Core.Data; //using DS.Module.Core.Extensions; //using DS.Module.UserModule; //using Microsoft.Extensions.DependencyInjection; //using NLog; //using SqlSugar; //namespace DS.Module.SqlSugar; ///// ///// SqlSugar 启动服务 ///// //public static class SqlSugarSetup //{ // // /// // // /// 数据库连接字符串 // // /// // // private static string DbInfo = AppSetting.Configuration["ConnectionStrings:DbInfo"]; // // // // /// // // /// 数据库类型 // // /// // // private static string DbType = AppSetting.Configuration["ConnectionStrings:DbType"]; // public static readonly Logger Logger = LogManager.GetCurrentClassLogger(); // // private readonly IUser user; // // private ILogger _logger; // /// // /// 将模块服务添加到依赖注入服务容器中 // /// // /// 依赖注入服务容器 // /// // public static IServiceCollection AddSqlSugarSetup(this IServiceCollection services) // { // if (services == null) throw new ArgumentNullException(nameof(services)); // Console.WriteLine("开始加载sqlsugar模块"); // Console.WriteLine("数据库配置id:" + AppSetting.app(new string[] { "DBInfo", "DefaultDbConnId" })); // var dbs = AppSetting.app("DBInfo", "DBS"); // //默认数据库 // List dbList = new List(); // DbConfig defaultdb = new DbConfig() // { // ConnId = AppSetting.app(new string[] { "DBInfo", "DefaultDbConnId" }), // Connection = AppSetting.app(new string[] { "DBInfo", "DefaultDbString" }), // DbType = AppSetting.app(new string[] { "DBInfo", "DefaultDbType" }).ObjToInt() // }; // dbList.Add(defaultdb); // //业务数据库集合 // foreach (var item in dbs) // { // dbList.Add(item); // } // var _serviceProvider = services.GetService(); // ICacheService myCache = new SqlSugarCsRedisCache(_serviceProvider); // var connectConfigList = SqlsugarHelper.ReturnConnectionConfig(dbList, myCache); // foreach (var item in dbList) // { // //防止数据库重复,导致的事务异常 // if (connectConfigList.Any(a => a.ConfigId == (dynamic)item.ConnId || a.ConnectionString == item.Connection)) // { // continue; // } // connectConfigList.Add(new ConnectionConfig() // { // ConnectionString = item.Connection, // DbType = (DbType)item.DbType, // IsAutoCloseConnection = true, // ConfigId = item.ConnId, // InitKeyType = InitKeyType.Attribute, // MoreSettings = new ConnMoreSettings() // { // IsAutoRemoveDataCache = true //自动清理缓存 // }, // // 自定义特性 // ConfigureExternalServices = new ConfigureExternalServices() // { // } // }); // } // var user = services.GetService(); // //全局上下文生效 // SqlSugarScope sqlSugar = new SqlSugarScope(connectConfigList, // db => // { // // 封装AOP // // SqlsugarAopHelper.AopForSqlsugar(db, user, dbList, connectConfigList); // ///* // // * 默认只会配置到第一个数据库,这里按照官方文档进行多数据库/多租户文档的说明进行循环配置 // // */ // foreach (var c in connectConfigList) // { // var dbProvider = db.GetConnectionScope((string)c.ConfigId); // //单例参数配置,所有上下文生效 // dbProvider.Ado.CommandTimeOut = 30; // dbProvider.Aop.OnLogExecuting = (sql, pars) => // { // Logger.Log(LogLevel.Info, // DateTime.Now.ToString() + "\r\n" + // UtilMethods.GetSqlString(c.DbType, sql, pars)); // }; // dbProvider.Aop.DataExecuting = (oldValue, entityInfo) => // { // if (entityInfo.OperationType == DataFilterType.InsertByObject) // { // if (entityInfo.PropertyName == "Id") // { // if (entityInfo.EntityColumnInfo.PropertyInfo.PropertyType == typeof(string)) // { // entityInfo.SetValue(GuidHelper.GetSnowflakeId()); // } // if (entityInfo.EntityColumnInfo.PropertyInfo.PropertyType == typeof(long)) // { // entityInfo.SetValue(SnowFlakeSingle.Instance.NextId()); // } // } // if (entityInfo.PropertyName == "CreateTime") // entityInfo.SetValue(DateTime.Now); // if (!user.UserId.IsNullOrEmpty()) // { // if (entityInfo.PropertyName == "TenantId") // entityInfo.SetValue(user.GetTenantId()); // } // if (entityInfo.PropertyName == "CreateBy") // { // if (!user.UserId.IsNullOrEmpty()) // { // entityInfo.SetValue(user.UserId); // } // else // { // entityInfo.SetValue(1288018625843826688); // } // } // if (entityInfo.PropertyName == "Deleted") // entityInfo.SetValue(false); // } // if (entityInfo.OperationType == DataFilterType.UpdateByObject) // { // if (entityInfo.PropertyName == "UpdateTime") // entityInfo.SetValue(DateTime.Now); // if (entityInfo.PropertyName == "UpdateBy" && user != null) // entityInfo.SetValue(user.UserId); // } // }; // dbProvider.Aop.OnError = (exp) => //执行SQL 错误事件 // { // Logger.Error(DateTime.Now.ToString() + "\r\n" + exp.Sql + "\r\n" + exp.Parametres); // }; // // var tenantId = user.GetTenantId(); // //全局过滤租户 // dbProvider.QueryFilter.AddTableFilter(m => m.TenantId ==long.Parse(user.TenantId)); // //全局过滤机构Id // dbProvider.QueryFilter.AddTableFilter(m => m.OrgId == user.GetOrgId()); // //全局过滤共享机构Id // dbProvider.QueryFilter.AddTableFilter(x => x.OrgId == user.OrgId || x.IsShared); // //全局软删除过滤 // dbProvider.QueryFilter.AddTableFilter(m => m.Deleted == false); // } // }); // services.AddSingleton(sqlSugar); //这边是SqlSugarScope用AddSingleton // return services; // } //}