using MaterialTraceability.Common; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MaterialTraceability.SqlSugar { public class SqlGenerator { public static string ConnectionString = "Data Source=172.21.29.56;Port=6066;Initial Catalog=ry;uid=root; pwd=root"; private static SqlSugarClient sqlSugarClient = null; private static readonly object lockHelper = new object(); /// /// 连接服务器数据库 /// /// public static SqlSugarClient GetMySqlInstance() { if (sqlSugarClient == null) { lock (lockHelper) { //单例模式,避免多次实例化 if (sqlSugarClient == null) { sqlSugarClient = new SqlSugarClient(new ConnectionConfig() { //数据库类型 DbType = DbType.MySql, //数据库连接字符串 ConnectionString = ConnectionString, InitKeyType = InitKeyType.Attribute, //是否自动关闭连接 IsAutoCloseConnection = true, //AopEvents = new AopEvents //{ // //记录执行SQL和参数 // OnLogExecuting = (sql, p) => // { // LogHelper.SqlLog(sql); // } //} }); //可注释 sqlSugarClient.Aop.OnLogExecuting = (sql, pars) => //SQL执行中事件 { Parallel.For(0, 1, e => { string SqlLog = ""; foreach (string item in new string[] { GetParas(pars), "【SQL语句】:" + sql }) { SqlLog = SqlLog + item; } LogHelper.SqlLog(SqlLog); }); }; } } } return sqlSugarClient; } private static string GetParas(SugarParameter[] pars) { string key = "【SQL参数】"; foreach (var param in pars) { key += $"{param.ParameterName}:{param.Value}\n"; } LogHelper.SqlLog(key); return key; } //官方建议 不单例 SqlSugarClient 对象 ,在多线程下,可能会引发异常。 public static SqlSugarClient GetSQLServerInstance() { return new SqlSugarClient(new ConnectionConfig() { DbType = DbType.MySql, ConnectionString = ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, AopEvents = new AopEvents { OnLogExecuting = (sql, p) => { //log.Debug(sql); } } }); } } }