From 9ad6d947d5f73ad9928aa3aea1a00fd06b07e1af Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Thu, 21 Mar 2019 23:46:28 +0800
Subject: [PATCH] update
---
更新日志.md | 9 +++++++++
表达式函数.md | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 43 insertions(+)
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 | 功能说明 |