using Microsoft.AspNetCore.Builder; using QYZH.InteractiveMagazine.Repository.Core; using Serilog; using SqlSugar; using SqlSugar.IOC; namespace QYZH.InteractiveMagazine.Repository.Core { /// /// sql sugar 管理器 /// public static class SqlSugarManager { /// /// 获基础信息库对象 (用IOC这块代码不能写到IOC里面) /// public static void InitSqlSugarDb(this WebApplicationBuilder builder, IocConfig config) { builder.Services.AddSqlSugar(config); //配置参数 SugarIocServices.ConfigurationSugar(db => { db.Aop.OnLogExecuting = (sql, pars) => { //var param = db.GetConnectionScope(0).Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)); Log.Information($"【sql语句】{UtilMethods.GetSqlString((DbType)config.DbType, sql, pars)}\n"); }; db.Aop.OnError = (ex) => { string sql = $"【错误SQL】{UtilMethods.GetSqlString((DbType)config.DbType, ex.Sql, (SugarParameter[])ex.Parametres)}\r\n"; Log.Error(ex, $"{sql}\r\n{ex.Message}\r\n{ex.StackTrace}"); }; //SQL执行完 db.Aop.OnLogExecuted = (sql, pars) => { //执行完了可以输出SQL执行时间 (OnLogExecutedDelegate) }; db.SetDefaultValue().SetQueryFilter(GetAssemblyNames());//.CreateClassFile("C:\\Model"); }); } private static string GetAssemblyNames() { string friendlyName = AppDomain.CurrentDomain.FriendlyName; string[] source = friendlyName.Split('.'); string assemblyNames = string.Join(".", source.Take(source.Count() - 1)) + ".Models"; return assemblyNames; } } }