using SqlSugar; using System.Text.RegularExpressions; namespace AI.Api.WebCore { public static class SqlsugarServiceExtensions { /// /// 添加SqlSugar /// /// 服务集合 /// public static IServiceCollection AddSqlsugar(this IServiceCollection services, string env, params ConnectionConfig[] connectionConfigs) { SqlSugarScope sqlSugar = new SqlSugarScope(connectionConfigs.ToList(), db => { if (env == Environments.Development) { // 正则表达式匹配Ip var ipMatch = Regex.Match(db.CurrentConnectionConfig.ConnectionString, @"((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))"); var connections = db.CurrentConnectionConfig.ConnectionString.Split(';'); string dbNamne = string.Empty; foreach (var item in connections) { if (item.Contains("Database")) { dbNamne = item.Split('=')[1]; } } //SQL执行前 db.Aop.OnLogExecuting = (sql, pars) => { // 打印 Sql 语句 Console.WriteLine($@"{DateTime.Now.ToShortTimeString()}{new string('=', 10)}BEGIN{new string('=', 5)} DB-IP:{ipMatch.Value} {new string('=', 5)} DB-Name:{dbNamne} {new string('=', 15)}"); Console.WriteLine($"执行Sql:{Environment.NewLine}{sql}"); Console.WriteLine($"参数:{db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value))}"); }; //SQL执行完成 db.Aop.OnLogExecuted = (sql, pars) => { //执行完了可以输出SQL执行时间 Console.WriteLine("Sql用时:" + db.Ado.SqlExecutionTime.ToString()); Console.WriteLine($@"{DateTime.Now.ToShortTimeString()}{new string('=', 10)}END{new string('=', 7)} DB-IP:{ipMatch.Value} {new string('=', 5)} DB-Name:{dbNamne} {new string('=', 15)}"); }; } }); services.AddSingleton(sqlSugar); StaticConfig.Check_StringIdentity = false; return services; } } }