请教差异日志的疑问 返回

SqlSugar 沟通中
8 882

        // 批量开启差异日志

        StaticConfig.CompleteInsertableFunc =

        StaticConfig.CompleteUpdateableFunc =

        StaticConfig.CompleteDeleteableFunc = db =>

        {

            if (db.GetType().GenericTypeArguments[0].GetInterfaces().Any(it => it == typeof(IDiffLog)))

            {

                var method = db.GetType().GetMethod("EnableDiffLogEvent");

                method.Invoke(db, [null]);

            }

        };

并在

        // 差异日志功能(审计)

        Aop.OnDiffLogEvent = it => 事件中处理的差异


现在我想部分执行数据不开启差异日志 有什么办法么?



热忱回答8

  • fate sta fate sta VIP0
    2025/11/7

    里面写IF ELSE

    0 回复
  • fate sta fate sta VIP0
    2025/11/7

               if (db.GetType().GenericTypeArguments[0].GetInterfaces().Any(it => it == typeof(IDiffLog)))

    这种就是继承idifflog的才进入

    0 回复
  • Roe deer Roe deer VIP0
    2025/11/9

    我现在是 继承了 IDiffLog 接口的实体,执行数据库操作的时候都开启了差异记录了,实际情况中,有些时候执行不需要记录 ,我不知道执行的时候,怎么屏蔽(实际已经全局配置了)

    0 回复
  • fate sta fate sta VIP0
    2025/11/9

    那你就不要用全局注册

    0 回复
  • fate sta fate sta VIP0
    2025/11/9

    image.png

    0 回复
  • fate sta fate sta VIP0
    2025/11/9

    全局配置还有一种方法就是通过IOC赋值。


    比如 你业务中var a= app.GetService<ClassA>():

    a.IsNoDiff=true;


    然后

    Aop中用 app.GetService<ClassA>():拿出a.IsNoDiff是不是true

    通过IOC的scoped方式进行变量传递

    0 回复
  • Roe deer Roe deer VIP0
    2025/11/10

    0 回复
  • Roe deer Roe deer VIP0
    2025/11/10

    多谢

    0 回复