请教差异日志的疑问 返回

SqlSugar 沟通中
8 309
该叫什么 Roe deer 发布于2周前
悬赏:0 飞吻

        // 批量开启差异日志

        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

  • 里面写IF ELSE

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

    这种就是继承idifflog的才进入

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

    0 回复
  • 那你就不要用全局注册

    0 回复
  • image.png

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


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

    a.IsNoDiff=true;


    然后

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

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

    0 回复
  • 0 回复
  • 多谢

    0 回复