From e1a265f7aa0337ca12ad51ad5f61f7830bd8976d Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Tue, 13 Oct 2020 09:52:19 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20ToAggregate=20?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E6=97=B6=E5=BF=BD=E7=95=A5=E5=B7=B2=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=20OrderBy=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SelectProvider/Select0ProviderReader.cs | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs index 079c25e2..408d1193 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs @@ -711,12 +711,21 @@ namespace FreeSql.Internal.CommonProvider protected TReturn InternalToAggregate(Expression select) { - var map = new ReadAnonymousTypeInfo(); - var field = new StringBuilder(); - var index = 0; + var tmpOrderBy = _orderby; + _orderby = null; //解决 select count(1) from t order by id 这样的 SQL 错误 + try + { + var map = new ReadAnonymousTypeInfo(); + var field = new StringBuilder(); + var index = 0; - _commonExpression.ReadAnonymousField(_tables, field, map, ref index, select, null, null, _whereCascadeExpression, null, false); //不走 DTO 映射,不处理 IncludeMany - return this.ToListMapReader(new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null)).FirstOrDefault(); + _commonExpression.ReadAnonymousField(_tables, field, map, ref index, select, null, null, _whereCascadeExpression, null, false); //不走 DTO 映射,不处理 IncludeMany + return this.ToListMapReader(new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null)).FirstOrDefault(); + } + finally + { + _orderby = tmpOrderBy; + } } public TSelect InternalWhere(Expression exp) => exp == null ? this as TSelect : this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp, null, _whereCascadeExpression, _params)); @@ -967,12 +976,21 @@ namespace FreeSql.Internal.CommonProvider async protected Task InternalToAggregateAsync(Expression select) { - var map = new ReadAnonymousTypeInfo(); - var field = new StringBuilder(); - var index = 0; + var tmpOrderBy = _orderby; + _orderby = null; //解决 select count(1) from t order by id 这样的 SQL 错误 + try + { + var map = new ReadAnonymousTypeInfo(); + var field = new StringBuilder(); + var index = 0; - _commonExpression.ReadAnonymousField(_tables, field, map, ref index, select, null, null, _whereCascadeExpression, null, false); //不走 DTO 映射,不处理 IncludeMany - return (await this.ToListMapReaderAsync(new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null))).FirstOrDefault(); + _commonExpression.ReadAnonymousField(_tables, field, map, ref index, select, null, null, _whereCascadeExpression, null, false); //不走 DTO 映射,不处理 IncludeMany + return (await this.ToListMapReaderAsync(new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null))).FirstOrDefault(); + } + finally + { + _orderby = tmpOrderBy; + } } #endif #endregion