update

28810
2019-07-19 12:13:36 +08:00
parent 73f2d48e3e
commit 5709edbda1
3 changed files with 30 additions and 1 deletions

@@ -154,6 +154,30 @@ var subquery = select.ToSql(a => new {
});
```
## WhereCascade
多表查询时像isdeleted每个表都给条件挺麻烦的。WhereCascade使用后生成sql时所有表都附上这个条件。
如:
```csharp
fsql.Select<t1>()
.LeftJoin\<t2\>(...)
.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)

@@ -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

@@ -44,6 +44,7 @@ FreeSql在查询数据下足了功能链式查询语法、多表查询、表
| WhereIf | \<this\> | bool, Lambda | 支持多表查询表达式 |
| Where | \<this\> | string, parms | 原生sql语法条件Where("id = ?id", new { id = 1 }) |
| WhereIf | \<this\> | bool, string, parms | 原生sql语法条件WhereIf(true, "id = ?id", new { id = 1 }) |
| WhereCascade | \<this\> | Lambda | 实现多表查询时,向每个表中附加条件 |
| 【分组】 |
| GroupBy | \<this\> | Lambda | 按选择的列分组GroupBy(a => a.Name) | GroupBy(a => new{a.Name,a.Time}) |
| GroupBy | \<this\> | string, parms | 按原生sql语法分组GroupBy("concat(name, ?cc)", new { cc = 1 }) |