From 5709edbda1a49437b596332d87a45a38a1104ee1 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Fri, 19 Jul 2019 12:13:36 +0800 Subject: [PATCH] update --- 多表查询.md | 24 ++++++++++++++++++++++++ 更新日志.md | 6 +++++- 查询.md | 1 + 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/多表查询.md b/多表查询.md index d3a9dd8..4531fa8 100644 --- a/多表查询.md +++ b/多表查询.md @@ -154,6 +154,30 @@ var subquery = select.ToSql(a => new { }); ``` +## WhereCascade + +多表查询时,像isdeleted每个表都给条件,挺麻烦的。WhereCascade使用后生成sql时,所有表都附上这个条件。 + +如: + +```csharp +fsql.Select() +.LeftJoin\(...) +.WhereCascade(x => x.IsDeleted == false) +.ToList(); +``` + +得到的 SQL: + +```sql +SELECT ... +FROM t1 +LEFT JOIn t2 on ... +WHERE t1.IsDeleted = 0 && t2.IsDeleted = 0 +``` + +当其中的实体可附加表达式才会进行,包括子表查询,单次查询使用的表数目越多收益越大。 + ## 参考资料 - [《利用导航属性查询》](https://github.com/2881099/FreeSql/wiki/%e5%88%a9%e7%94%a8%e5%af%bc%e8%88%aa%e5%b1%9e%e6%80%a7) diff --git a/更新日志.md b/更新日志.md index dbbc501..e9675eb 100644 --- a/更新日志.md +++ b/更新日志.md @@ -1,13 +1,17 @@ 完整版本:年数-月-日-当日版本号,FreeSql、FreeSql.Repository、FreeSql.DbContext 版本号相同。 +## v0.7.13 + +- 增加 ISelect.WhereCascade 实现多表查询时,向每个表中附加条件; [wiki](https://github.com/2881099/FreeSql/wiki/%e5%a4%9a%e8%a1%a8%e6%9f%a5%e8%af%a2#WhereCascade); +- 增加 表达式对基类转换的解析,如:Where(a => (a as BaseEntity).IsDeleted == true); + ## v0.7.12 - 修复 .From 多表查询别名的匹配 bug; - 修复 SqlServer 未处理字符串前面加N 的 bug; - 增加 子查询判断,如果使用了相同 ISelect 会死循环; - 增加 连接字符串错误时的友好提示; -- 增加 表达式对基类转换的解析,如:Where(a => (a as BaseEntity).IsDeleted == true); ## v0.7.9 diff --git a/查询.md b/查询.md index 9798c63..9593092 100644 --- a/查询.md +++ b/查询.md @@ -44,6 +44,7 @@ FreeSql在查询数据下足了功能,链式查询语法、多表查询、表 | WhereIf | \ | bool, Lambda | 支持多表查询表达式 | | Where | \ | string, parms | 原生sql语法条件,Where("id = ?id", new { id = 1 }) | | WhereIf | \ | bool, string, parms | 原生sql语法条件,WhereIf(true, "id = ?id", new { id = 1 }) | +| WhereCascade | \ | Lambda | 实现多表查询时,向每个表中附加条件 | | 【分组】 | | GroupBy | \ | Lambda | 按选择的列分组,GroupBy(a => a.Name) | GroupBy(a => new{a.Name,a.Time}) | | GroupBy | \ | string, parms | 按原生sql语法分组,GroupBy("concat(name, ?cc)", new { cc = 1 }) |