FreeSql icon indicating copy to clipboard operation
FreeSql copied to clipboard

Aop.AuditValue 无法取消某个字段的更新

Open woodcoal opened this issue 2 years ago • 5 comments

Aop.AuditValue 如果我检测到某些字段不能更新时,无法取消其操作,只能继续或者设置一个新值。 是否可以增加一个取消选项或者增加动态忽略更新字段的功能呢?

woodcoal avatar Jan 14 '24 23:01 woodcoal

SetSource + IgnoreColumns

2881099 avatar Jan 15 '24 04:01 2881099

你这个是在 AOP 之前的处理,我的想法是如果我通过 AOP 来审计某些数据的时候,对于非法内容可以统一处理了。因为毕竟不是每隔业务处理的时候都会及时对数据进行清洗。

如果我在AOP 审计数据的时候发现问题,就可以及时记录并纠正。

woodcoal avatar Jan 18 '24 17:01 woodcoal

throw

2881099 avatar Jan 18 '24 22:01 2881099

触发异常只会导致整个数据库操作失效,而无法做到某个字段的审计。

可能我这个想法比较小众。 我的目的是对入库的数据进行一次审计,如果此数据某个字段存在异常或者需要人工审核,那么我禁止此字段更新,记录到后台,但是原数据其他字段更新不中断。

后期管理人员对此字段的数据进行检查,如果确实存在问题,那么直接拒绝操作,不对已入库的数据进行修改。如果检查没有问题,审核通过,则自动更新原始数据中对应字段的值。

目前审核流程是基于上位模块的专门接口操作,所以现在新建项目都需要通过此模块来处理。 但是因为所有数据都必须入库,同时 freesql 本身 aop 可以拦截,所以想通过数据库入库 aop 来拦截处理。这应该是最简单最高效的方法了。

因为既然 freesql 存在 AuditValue ,那么是不是可以让其值取消更新。

比如在 AuditValue 增加一个 cancel 属性,如果为 true,那么入库前就自动忽略此字段即可。

woodcoal avatar Jan 19 '24 05:01 woodcoal

框架要解决问题很复杂,例如 Update 多条记录,如何保证他们都取消了某字段?

建议在业务层用设计模式解决。

2881099 avatar Jan 19 '24 08:01 2881099