diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs index 6e4180c8..66c05d41 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs @@ -884,12 +884,12 @@ namespace FreeSql.Tests.MySqlConnector var subquery = select.ToSql(a => new { all = a, - count = select.Sum(b => b.Id) + count = (long)select.Sum(b => b.Id) }); var subqueryList = select.ToList(a => new { all = a, - count = select.Sum(b => b.Id) + count = (long)select.Sum(b => b.Id) }); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs index a6006fdb..b98117d7 100644 --- a/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs @@ -874,12 +874,12 @@ namespace FreeSql.Tests.MySql var subquery = select.ToSql(a => new { all = a, - count = select.Sum(b => b.Id) + count = (long)select.Sum(b => b.Id) }); var subqueryList = select.ToList(a => new { all = a, - count = select.Sum(b => b.Id) + count = (long)select.Sum(b => b.Id) }); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs index 42ff5ad9..a898a01e 100644 --- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs @@ -832,12 +832,12 @@ namespace FreeSql.Tests.PostgreSQL var subquery = select.ToSql(a => new { all = a, - count = select.Sum(b => b.Id) + count = (long)select.Sum(b => b.Id) }); var subqueryList = select.ToList(a => new { all = a, - count = select.Sum(b => b.Id) + count = (long)select.Sum(b => b.Id) }); } [Fact] diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs index 887c48f3..a08490a0 100644 --- a/FreeSql/Internal/CommonExpression.cs +++ b/FreeSql/Internal/CommonExpression.cs @@ -817,12 +817,18 @@ namespace FreeSql.Internal case "Min": case "Max": case "Avg": - var sqlSum = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { $"{exp3.Method.Name.ToLower()}({ExpressionLambdaToSql(exp3.Arguments.FirstOrDefault(), tsc)})" })?.ToString(); + var tscClone1 = tsc.CloneDisableDiyParse(); + tscClone1.isDisableDiyParse = false; + tscClone1._tables = fsqltables; + var sqlSum = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { $"{exp3.Method.Name.ToLower()}({ExpressionLambdaToSql(exp3.Arguments.FirstOrDefault(), tscClone1)})" })?.ToString(); if (string.IsNullOrEmpty(sqlSum) == false) return $"({sqlSum.Replace("\r\n", "\r\n\t")})"; break; case "First": - var sqlFirst = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { ExpressionLambdaToSql(exp3.Arguments.FirstOrDefault(), tsc) })?.ToString(); + var tscClone2 = tsc.CloneDisableDiyParse(); + tscClone2.isDisableDiyParse = false; + tscClone2._tables = fsqltables; + var sqlFirst = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { ExpressionLambdaToSql(exp3.Arguments.FirstOrDefault(), tscClone2) })?.ToString(); if (string.IsNullOrEmpty(sqlFirst) == false) return $"({sqlFirst.Replace("\r\n", "\r\n\t")})"; break;