update

28810
2020-08-08 15:50:54 +08:00
parent 28a39b4122
commit 9243a82fd6
2 changed files with 21 additions and 8 deletions

@@ -91,9 +91,9 @@ fsql.Select<Topic>()
//SELECT a.`Id`, a.`Title`, a.`Clicks`, a.`CreateTime`, a.`CategoryId`
//FROM `Topic` a
//WHERE (exists(SELECT 1
// FROM `Topic` b
// WHERE (b.`Id` = a.`Id`)
// limit 0,1))
// FROM `Topic` b
// WHERE (b.`Id` = a.`Id`)
// limit 0,1))
```
> 提示:由于子查询的实体类与上层相同,使用 As("b") 指明别名,以便区分
@@ -107,10 +107,23 @@ fsql.Select<Topic>()
//SELECT a.`Id`, a.`Title`, a.`Clicks`, a.`CreateTime`, a.`CategoryId`
//FROM `Topic` a
//WHERE (((a.`Id`) in (SELECT b.`Id`
// FROM `Topic` b)))
// FROM `Topic` b)))
```
## 6、子表First/Count/Sum/Max/Min/Avg
## 6、子表Join
```csharp
fsql.Select<Topic>()
.Where(a => string.Join(",", fsql.Select<StringJoin01>().ToList(b => b.Id))
.ToList();
//SELECT (SELECT group_concat(b.`name` separator ',')
// FROM `StringJoin01` b) as1
//FROM `Topic` a
```
> 提示:子查询 string.Join + ToList 适配了 sqlserver/pgsql/oracle/mysql/sqlite/达梦/金仓 [#405](https://github.com/dotnetcore/FreeSql/issues/405)
## 7、子表First/Count/Sum/Max/Min/Avg
```csharp
fsql.Select<Category>().ToList(a => new {
all = a,
@@ -123,7 +136,7 @@ fsql.Select<Category>().ToList(a => new {
});
```
## 7、AsSelect
## 8、AsSelect
```csharp
fsql.Select<Category>()
@@ -141,7 +154,7 @@ fsql.Select<Category>()
将集合属性快速转换为 ISelect 进行子查询操作。
## 8、WhereCascade
## 9、WhereCascade
多表查询时像isdeleted每个表都给条件挺麻烦的。WhereCascade使用后生成sql时所有表都附上这个条件。

@@ -5,7 +5,7 @@
- **增加 DbContext/Repository BeginEdit/EndEdit 批量编辑数据的方法 #397**
- **增加 FreeSql.Provider.SqlServerForSystem 使用 System.Data.SqlClient.dll 兼容更多运行平台 #401 #398 #395 #392 #391**
- 增加 SqlServer lambda 表达式树解析子查询 ToList + string.Join() 产生 类似 group_concat 的效果;#405
- 增加 lambda 表达式树解析子查询 ToList + string.Join() 产生 类似 group_concat 的效果(适配了 sqlserver/pgsql/oracle/mysql/sqlite/达梦/金仓)#405
- 修复 fsql.InsertOrUpdate 在同线程事务模式内使用的 bug #402
- 修复 fsql.Ado.ExecuteDataTable 当记录不存在时,未返回 Columns 设置 #403
- 修复 IInsert/IUpdate BatchProgress 异步执行不生效的 bug