diff --git a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.csproj b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.csproj index 717e41f2..79602ff3 100644 --- a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.csproj +++ b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.csproj @@ -47,6 +47,7 @@ + diff --git a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml index 03c7cd98..06e3330c 100644 --- a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml +++ b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml @@ -552,6 +552,29 @@ 保存或添加,如果主键有值则尝试 Update,如果影响的行为 0 则尝试 Insert + + + 测试方法的执行顺序 + + + + + 顺序 + + + + + 单元测试的排序策略 + + + + + 执行顺序 + + + + + 表中带点 diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs index 860bdb3e..2294ab2f 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs @@ -1,4 +1,5 @@ using FreeSql.DataAnnotations; +using Microsoft.Data.SqlClient; using System; using System.Collections.Generic; using System.Diagnostics; @@ -10,6 +11,51 @@ namespace FreeSql.Tests.SqlServer { #region issues #1215 + [Fact] + public void IssuesParameter01() + { + using (var fsql = new FreeSql.FreeSqlBuilder() + .UseConnectionFactory(FreeSql.DataType.SqlServer, () => new SqlConnection("Data Source=.;Integrated Security=True;Initial Catalog=issues684;Pooling=true;Max Pool Size=36;TrustServerCertificate=true")) + .UseAutoSyncStructure(true) + .UseGenerateCommandParameterWithLambda(true) + .Build()) + { + fsql.Aop.CommandBefore += (_, e) => + { + + }; + var qlrzjh = "qlrzjh"; + var qzh = "qzh"; + var sql = fsql.Select() + .Where(a => a.QLRZJHM == qlrzjh && a.QZH == qzh) + .GroupBy(a => new { a.QLRZJHM, a.QZH }) + .WithTempQuery(g => new { BBH = g.Min(g.Value.BBH), g.Key }) + .From() + .InnerJoin((a, b) => a.BBH == b.BBH && b.QLRZJHM == qlrzjh && b.QZH == qzh) + .ToSql((a, b) => b); + Assert.Equal(@"SELECT b.[QLRZJHM] as1, b.[QZH] as2, b.[BBH] as3 +FROM ( + SELECT min(a.[BBH]) [BBH], a.[QLRZJHM], a.[QZH] + FROM [QLR_TO_LSH] a + WHERE (a.[QLRZJHM] = @exp_0 AND a.[QZH] = @exp_1) + GROUP BY a.[QLRZJHM], a.[QZH] ) a +INNER JOIN [QLR_TO_LSH] b ON a.[BBH] = b.[BBH] AND b.[QLRZJHM] = N'qlrzjh' AND b.[QZH] = N'qzh'", sql); + fsql.Select() + .Where(a => a.QLRZJHM == qlrzjh && a.QZH == qzh) + .GroupBy(a => new { a.QLRZJHM, a.QZH }) + .WithTempQuery(g => new { BBH = g.Min(g.Value.BBH), g.Key }) + .From() + .InnerJoin((a, b) => a.BBH == b.BBH && b.QLRZJHM == qlrzjh && b.QZH == qzh) + .First(); + } + } + class QLR_TO_LSH + { + public string QLRZJHM { get; set; } + public string QZH { get; set; } + public int BBH { get; set; } + } + [Fact] public void VicDemo20220815() { diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs index c719221f..3ecf553e 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs @@ -247,6 +247,7 @@ namespace FreeSql.Internal.CommonProvider ret._transaction = _select._transaction; ret._whereGlobalFilter = new List(_select._whereGlobalFilter.ToArray()); ret._cancel = _select._cancel; + ret._params.AddRange(_select._params); if (ret._tables[0].Table == null) ret._tables[0].Table = TableInfo.GetDefaultTable(typeof(TDto)); Select0Provider.WithTempQueryParser parser = null; _addFieldAlias = true; //解决:[Column(Name = "flevel") 与属性名不一致时,嵌套查询 bug