Skip to content

Commit 92ff134

Browse files
committed
- 修复 GroupBy + WithTempQuery + 子查询参数化问题;#1965
1 parent dc1e8cf commit 92ff134

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

Examples/base_entity/Program.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,18 @@ static void Main(string[] args)
620620
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
621621
#endregion
622622

623+
var p_0 = "x1";
624+
var p_0r1 = fsql.Select<User1>().Where(a => a.Nickname == p_0)
625+
.GroupBy(a => a.GroupId)
626+
.WithTempQuery(a => new
627+
{
628+
GroupId = a.Key,
629+
Sum = fsql.Select<UserGroup>()
630+
.Where(b => b.Id == a.Key && b.GroupName == p_0)
631+
.Sum(b => b.Id)
632+
})
633+
.ToList();
634+
623635
fsql.Delete<RequestEntity>().Where("1=1").ExecuteAffrows();
624636
fsql.Delete<RequestDetailEntity>().Where("1=1").ExecuteAffrows();
625637
fsql.Insert(new RequestEntity

FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ public ISelect<TDto> WithTempQuery<TDto>(Expression<Func<ISelectGroupingAggregat
249249
ret._transaction = _select._transaction;
250250
ret._whereGlobalFilter = new List<GlobalFilter.Item>(_select._whereGlobalFilter.ToArray());
251251
ret._cancel = _select._cancel;
252-
ret._params.AddRange(_select._params);
252+
//ret._params.AddRange(_select._params); //#1965 WithTempQueryParser 子查询参数化,押后添加参数
253253
if (ret._tables[0].Table == null) ret._tables[0].Table = TableInfo.GetDefaultTable(typeof(TDto));
254254
Select0Provider.WithTempQueryParser parser = null;
255255
_addFieldAlias = true; //解决:[Column(Name = "flevel") 与属性名不一致时,嵌套查询 bug
@@ -275,6 +275,7 @@ public ISelect<TDto> WithTempQuery<TDto>(Expression<Func<ISelectGroupingAggregat
275275
var sql = $"\r\n{this.ToSql(parser._insideSelectList[0].InsideField)}";
276276
ret.WithSql(sql);
277277
ret._diymemexpWithTempQuery = parser;
278+
ret._params.AddRange(_select._params);
278279
return ret;
279280
}
280281

0 commit comments

Comments
 (0)