123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- using Microsoft.AspNetCore.Hosting;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.DependencyInjection;
- using SqlSugar;
- using SqlSugar.IOC;
- namespace WMS.BZSqlSugar
- {
- public static class DbExtension
- {
-
- /// <summary>
- /// 初始化db
- /// </summary>
- /// <param name="services"></param>
- /// <param name="Configuration"></param>
- /// <param name="environment"></param>
- public static void AddSqlSugarDb(this IServiceCollection services, IConfiguration Configuration, IWebHostEnvironment environment)
- {
- var lists = Util.ConfigHelper.GetConnectionConfigs().Connections;
-
- var iocList = new List<IocConfig>();
- foreach (var item in lists)
- {
- iocList.Add(new IocConfig()
- {
- ConfigId = item.ConfigId,
- ConnectionString = item.ConnectionString,
- DbType = (IocDbType)item.DataBaseType,
- IsAutoCloseConnection = item.IsAutoCloseConn
- });
- }
- SugarIocServices.AddSqlSugar(iocList);
- ICacheService cache = new SqlSugarCache();
- SugarIocServices.ConfigurationSugar(db =>
- {
-
- iocList.ForEach(iocConfig =>
- {
- SetSugarAop(db, iocConfig, cache);
- });
- });
- }
- public static void AddQuestDBSqlSugarDb(this IServiceCollection services, IConfiguration Configuration, IWebHostEnvironment environment)
- {
- var lists = Util.ConfigHelper.GetQuestDBConnectionConfigs().Connections;
- var iocList = new List<IocConfig>();
- foreach (var item in lists)
- {
- iocList.Add(new IocConfig()
- {
- ConfigId = item.ConfigId,
- ConnectionString = item.ConnectionString,
- DbType = (IocDbType)item.DataBaseType,
- IsAutoCloseConnection = item.IsAutoCloseConn
- });
- }
- SugarIocServices.AddSqlSugar(iocList);
- ICacheService cache = new SqlSugarCache();
- SugarIocServices.ConfigurationSugar(db =>
- {
- iocList.ForEach(iocConfig =>
- {
- SetQuestDBSugarAop(db, iocConfig, cache);
- });
- });
- }
- /// <summary>
- /// 数据库Aop设置
- /// </summary>
- /// <param name="db"></param>
- /// <param name="iocConfig"></param>
- /// <param name="cache"></param>
- private static void SetSugarAop(SqlSugarClient db, IocConfig iocConfig, ICacheService cache)
- {
- var config = db.GetConnectionScope(iocConfig.ConfigId).CurrentConnectionConfig;
- string configId = config.ConfigId;
- db.GetConnectionScope(configId).Aop.OnLogExecuting = (sql, pars) =>
- {
- string log = $"【db{configId} SQL语句】{UtilMethods.GetSqlString(config.DbType, sql, pars)}\n";
- if (sql.TrimStart().StartsWith("SELECT", StringComparison.OrdinalIgnoreCase))
- {
- Console.WriteLine(log);
- }
- else if (sql.StartsWith("UPDATE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("INSERT", StringComparison.OrdinalIgnoreCase))
- {
- Console.WriteLine(log);
- }
- else if (sql.StartsWith("DELETE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("TRUNCATE", StringComparison.OrdinalIgnoreCase))
- {
- Console.WriteLine(log);
- }
- else
- {
- log = $"【db{configId} SQL语句】dbo.{sql} {string.Join(", ", pars.Select(x => x.ParameterName + " = " + GetParsValue(x)))};\n";
- Console.WriteLine(log);
- }
- };
- db.GetConnectionScope(configId).Aop.OnError = (ex) =>
- {
- //var pars = db.Utilities.SerializeObject(((SugarParameter[])ex.Parametres).ToDictionary(it => it.ParameterName, it => it.Value));
- string sql = "【错误SQL】" + UtilMethods.GetSqlString(config.DbType, ex.Sql, (SugarParameter[])ex.Parametres) + "\r\n";
- Console.WriteLine( $"\"【错误SQL】\"{sql}\r\n{ex.Message}\r\n{ex.StackTrace}");
- };
- db.GetConnectionScope(configId).Aop.DataExecuting = (oldValue, entiyInfo) =>
- {
- };
-
- db.GetConnectionScope(configId).CurrentConnectionConfig.MoreSettings = new ConnMoreSettings()
- {
- IsAutoRemoveDataCache = true
- };
-
- }
- private static void SetQuestDBSugarAop(SqlSugarClient db, IocConfig iocConfig, ICacheService cache)
- {
- var config = db.GetConnectionScope(iocConfig.ConfigId).CurrentConnectionConfig;
- string configId = config.ConfigId;
- db.GetConnectionScope(configId).Aop.OnLogExecuting = (sql, pars) =>
- {
- string log = $"【db{configId} SQL语句】{UtilMethods.GetSqlString(config.DbType, sql, pars)}\n";
- if (sql.TrimStart().StartsWith("SELECT", StringComparison.OrdinalIgnoreCase))
- {
- Console.WriteLine(log);
- }
- else if (sql.StartsWith("UPDATE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("INSERT", StringComparison.OrdinalIgnoreCase))
- {
- Console.WriteLine(log);
- }
- else if (sql.StartsWith("DELETE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("TRUNCATE", StringComparison.OrdinalIgnoreCase))
- {
- Console.WriteLine(log);
- }
- else
- {
- log = $"【db{configId} SQL语句】dbo.{sql} {string.Join(", ", pars.Select(x => x.ParameterName + " = " + GetParsValue(x)))};\n";
- Console.WriteLine(log);
- }
- };
- db.GetConnectionScope(configId).Aop.OnError = (ex) =>
- {
- //var pars = db.Utilities.SerializeObject(((SugarParameter[])ex.Parametres).ToDictionary(it => it.ParameterName, it => it.Value));
- string sql = "【错误SQL】" + UtilMethods.GetSqlString(config.DbType, ex.Sql, (SugarParameter[])ex.Parametres) + "\r\n";
- Console.WriteLine($"\"【错误SQL】\"{sql}\r\n{ex.Message}\r\n{ex.StackTrace}");
- };
- db.GetConnectionScope(configId).Aop.DataExecuting = (oldValue, entiyInfo) =>
- {
- };
- db.GetConnectionScope(configId).CurrentConnectionConfig.MoreSettings = new ConnMoreSettings()
- {
- IsAutoRemoveDataCache = true
- };
- }
- private static object GetParsValue(SugarParameter x)
- {
- if (x.DbType == System.Data.DbType.String || x.DbType == System.Data.DbType.DateTime || x.DbType == System.Data.DbType.String)
- {
- return "'" + x.Value + "'";
- }
- return x.Value;
- }
- }
- }
|