mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 修复 ISelect Sum/First 子查询时,若子查询实体类与主查询一样时,导致的 bug;
This commit is contained in:
parent
ecda6d8f49
commit
6d9b6b6670
@ -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]
|
||||
|
@ -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]
|
||||
|
@ -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]
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user