dotnetcore / dotnetcore/FreeSql
Join两个相同的表时生成的sql错误
- Dominant language
- C#
- Stars
- 4.4k
- Forks
- 910
- PR merge metrics
- No merged PRs in 30d
Description
#### Feature 特性
针对Join两个相同的表时生成的sql错误的问题,建议不要限制abc别名。
```c#
var sql = Db.Select()
.InnerJoin((x, y, z) => x.Organ1Id == y.Id)
.InnerJoin((x, y, z) => x.Organ2Id == z.Id)
.ToSql((x, y, z) => new { x, y, z });
生成后的sql:
SELECT a.`Id` as1, a.`UserName` as2, a.`Organ1Id` as3, a.`Organ2Id` as4, b.`Id` as5, b.`OrganName` as6, b.`Id` as7, b.`OrganName` as8
FROM `TableUser` a
INNER JOIN `TableOrgan` b ON a.`Organ1Id` = b.`Id`
INNER JOIN `TableOrgan` c ON a.`Organ2Id` = c.`Id`
```
#### 简要描述原因
针对上述Join并且有两个相同表的时候,如果lambda中不使用abc变量时生成的语句会有问题。每个人的书写习惯不大一样,有人习惯使用xyz,有人习惯使用ijk等等,所以写代码时就特别特别容易出问题,而且生成的SQL还不一定报错(上边生成的语句就不会报错),写代码的时候也不太可能每写一条语句就生成sql去看一下对不对(这个心智负担太重了),所以建议在整个框架层面(不光join)转换为sql的时候,不要依赖和限制用户所使用的参数名称。
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.