diff --git a/AOP.md b/AOP.md index 8655667..87b0ac0 100644 --- a/AOP.md +++ b/AOP.md @@ -21,6 +21,24 @@ fsql.Aop.CurdAfter = (s, e) => { 除了 CurdAfter,还有一个 CurdBefore (在执行 sql 之前触发)。 +## 审计属性值 + +实现插入/更新时统一处理某些值,比如某属性的雪花算法值、创建时间值、甚至是业务值。 + +```csharp +fsql.Aop.AuditValue += (s, e) => { + if (e.Column.CsType == typeof(long) + && e.Property.GetCustomAttribute(false) != null + && e.Value?.ToString() == 0) + e.Value = new Snowflake().GetId(); +}; +``` +> 当属性的类型是 long,并且标记了 [Snowflake],并且当前值是 0,那么在插入/更新时它的值将设置为雪花id值。 + +> 说明:SnowflakeAttribute 是使用者您来定义,new Snowflake().GetId() 也是由使用者您来实现 + +如果命名规范,可以在 aop 里判断,if (e.Property.Name == "createtime") e.Value = DateTime.Now; + ## 审计迁移脚本 FreeSql 自带迁移功能,那么迁移的 SQL 语句长啥样,你可能会好奇。 diff --git a/更新日志.md b/更新日志.md index 2f40db8..f35508c 100644 --- a/更新日志.md +++ b/更新日志.md @@ -1,6 +1,10 @@ 完整版本:年数-月-日-当日版本号,FreeSql、FreeSql.Repository、FreeSql.DbContext 版本号相同。 +## v0.8.11 + +- 增加 Aop.AuditValue 事件,在插入/更新数据时审计属性值,[wiki](https://github.com/2881099/FreeSql/wiki/AOP); + ## v0.8.10 - 修复 Pgsql 批量更新使用 NoneParameter 后日期类型的语法 bug;