diff --git a/更新日志.md b/更新日志.md index 0d6e1d5..cbc7829 100644 --- a/更新日志.md +++ b/更新日志.md @@ -1,6 +1,15 @@ 完整版本:年数-月-日-当日版本号,FreeSql、FreeSql.Repository、FreeSql.DbContext 版本号相同。 +## v0.3.22 + +- 优化 导航属性 ManyToOne 名称查找规则; +- 增加 IFreeSql.Aop 属性,未来所有拦截方法都在这里,第一期支持如下: + * 监控 ToList 返回的的数据,用于拦截重新装饰; + * 监视 Where,包括 select/update/delete,返回值 true 时可使上层不被执行; + * 可自定义解析表达式; +- 增加 ISelect.TractToList,用于单次跟踪或审核实体; + ## v0.3.21 - 增加 IUpdate IgnoreColumns 重载方法,支持传入字符串数组忽略修改; diff --git a/表达式函数.md b/表达式函数.md index d21d0ea..0de5d93 100644 --- a/表达式函数.md +++ b/表达式函数.md @@ -43,6 +43,40 @@ var t3 = select.OrderBy(a => Guid.NewGuid()).Limit(1).ToSql(); //ORDER BY newid() ``` +## AOP拦截实现自定义解析 + +IFreeSql 对象有 Aop 成员,那里提供一堆 AOP 拦截的方法。其实有一个事件名称:ParseExpression。 + +```csharp +/// +/// 可自定义解析表达式 +/// +EventHandler ParseExpression { get; set; } + +public class AopParseExpressionEventArgs : EventArgs { + public AopParseExpressionEventArgs(Expression expression, Func freeParse) { + this.Expression = expression; + this.FreeParse = freeParse; + } + + /// + /// 内置解析功能,可辅助您进行解析 + /// + public Func FreeParse { get; } + + /// + /// 需要您解析的表达式 + /// + public Expression Expression { get; } + /// + /// 解析后的内容 + /// + public string Result { get; set; } +} +``` + +FreeParse 是提供给外部的解析工具,它拥有 FreeSql 所有表达式功能,当您自定义解析的过程中遇到特别难处理的,可通过它快速解析出表达式的子部分内容。 + ## 表达式函数全览 | 表达式 | MySql | SqlServer | PostgreSQL | Oracle | 功能说明 |