dotnetcore / dotnetcore/FreeSql
Take(0)/Limit(0)会导致生成错误的SQL
Open
- Dominant language
- C#
- Stars
- 4.4k
- Forks
- 910
- PR merge metrics
- No merged PRs in 30d
Description
#### 问题描述及重现代码:
若在表达式中使用Take方法,且传入的参数为0的话,会导致生成的SQL忽略`top 0`限制,从而变成查询全表。由于传入的Take参数可能来自第三方或者中间过程的输出,一旦校验不完全就可能会导致这样的情况发生。
期待的行为应该是直接返回空集合,或者干脆抛出`ArgumentOutOfRangeException`。
```c#
freeSql.Select()
.OrderBy(u => u.Id)
.Take(0) // 或Limit(0)
.ToSql(u => u.Name);
```
目前会被翻译为:
```sql
SELECT a.[Name] as1
FROM [UserInfo] a
ORDER BY a.[Id]
```
#### 数据库版本
SqlServer 2016
#### 安装的Nuget包
3.5.207
#### .net framework/. net core? 及具体版本
.NET 9
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.