多库切换的情况,只能记录第一个库的sql日志,切库之后,第二个sql日志打印不了,这是为什么? 返回

SqlSugar 沟通中
2 154
该叫什么 少年 发布于2周前
悬赏: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);
    }
}


热忱回答2

  • 看文档:多租户 (有多租户aop用法)

    0 回复
  • @小杰:已解决,谢谢

    0 回复