多库切换的情况,只能记录第一个库的sql日志,切库之后,第二个sql日志打印不了,这是为什么? 返回
SqlSugar
沟通中
2
154
悬赏:0 飞吻
public class SqlSugarHelper : SqlSugarClient
{
/// <summary>
/// 构造函数
/// </summary>
public SqlSugarHelper() : base(GetConnectionConfigs())
{
ConfigureAop(this);
}
/// <summary>
/// 获取数据库连接配置
/// </summary>
/// <returns></returns>
public static List<ConnectionConfig> GetConnectionConfigs()
{
return new List<ConnectionConfig>()
{
getConnectionConfig("adf_manageV2"),
getConnectionConfig("ErpConn")
};
}
/// <summary>
/// 获取数据库连接配置
/// </summary>
/// <param name="section"></param>
/// <returns></returns>
/// <exception cref="ArgumentException"></exception>
private static ConnectionConfig getConnectionConfig(string section = "adf_manageV2")
{
var connectionString = Config.Configuration.GetSection("Connection:MySqlConns:" + section);
if (string.IsNullOrEmpty(connectionString.Value))
{
throw new ArgumentException($"数据库连接配置节不能为空");
}
return new ConnectionConfig()
{
ConfigId = section,
ConnectionString = connectionString.Value,
DbType = DbType.SqlServer,
IsAutoCloseConnection = true
};
}
/// <summary>
/// sql语句输出
/// </summary>
private void ConfigureAop(SqlSugarClient db)
{
StringBuilder stringBuilder = new StringBuilder();
//sql执行前
db.Aop.OnLogExecuting = (sql, para) =>
{
stringBuilder.AppendLine("=== SQL 日志 ===");
stringBuilder.AppendLine($"SQL: {sql}");
if (para != null && para.Length > 0)
{
stringBuilder.Append("参数: ");
foreach (var p in para)
{
stringBuilder
.Append(" ")
.Append(p.ParameterName)
.Append(" = ")
.Append(p.Value?.ToString() ?? "NULL")
.AppendLine();
}
}
string logContent = stringBuilder.ToString();
LoggerHelper.Info(logContent);
};
//sql执行完成之后
db.Aop.OnLogExecuted = (sql, para) =>
{
LoggerHelper.Info("SQL 执行完成");
};
//sql执行错误
db.Aop.OnError = (ex) =>
{
LoggerHelper.Error($"SQL 错误: {ex.Message}");
};
}
/// <summary>
/// 获取指定配置的数据库连接(多库支持)
/// </summary>
public ISqlSugarClient GetDb(string configId = "adf_manageV2")
{
return this.GetConnection(configId);
}
}