From cf870c07cb949432471c318e4f18bab44a32d2da Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Sat, 21 Jun 2025 13:32:45 +0800 Subject: [PATCH 1/5] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20AsTreeCte=20+=20In?= =?UTF-8?q?sertInto=20=E8=AF=AD=E6=B3=95=E9=94=99=E8=AF=AF=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=9B#2045?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SelectProvider/Select0ProviderReader.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs index 6b422ebcd..cd017a282 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs @@ -1038,9 +1038,15 @@ namespace FreeSql.Internal.CommonProvider childs.Add(new ReadAnonymousTypeInfo { DbField = dbfield, CsName = col.CsName }); } var selectField = string.Join(", ", childs.Select(a => a.DbField)); + var cteWithSql = ""; + if (_is_AsTreeCte && this._select.TrimStart().StartsWith("WITH") && this._select.EndsWith("SELECT ")) + { + cteWithSql = this._select.Substring(0, this._select.Length - 7); + this._select = "SELECT "; + } var selectSql = this.ToSql(selectField); var insertField = string.Join(", ", childs.Select(a => _commonUtils.QuoteSqlName(tb.ColumnsByCs[a.CsName].Attribute.Name))); - var sql = $"INSERT INTO {_commonUtils.QuoteSqlName(tableName)}({insertField})\r\n{selectSql}"; + var sql = $"{cteWithSql}INSERT INTO {_commonUtils.QuoteSqlName(tableName)}({insertField})\r\n{selectSql}"; return sql; } public int InternalInsertInto(string tableName, Expression select) From ec748c45a2dade913b767371f956c98c96276e88 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Sat, 21 Jun 2025 13:51:06 +0800 Subject: [PATCH 2/5] v3.5.209 #2045 --- Directory.Build.props | 2 +- Examples/base_entity/Program.cs | 63 +++++++++++-------- .../FreeSql.Extensions.AggregateRoot.csproj | 2 +- .../FreeSql.Extensions.BaseEntity.csproj | 2 +- .../FreeSql.Extensions.EFModel.csproj | 2 +- .../FreeSql.Extensions.JsonMap.csproj | 2 +- .../FreeSql.Extensions.LazyLoading.csproj | 2 +- .../FreeSql.Extensions.Linq.csproj | 2 +- .../FreeSql.Extensions.ZeroEntity.csproj | 2 +- .../FreeSql.Generator.csproj | 2 +- FreeSql.All/FreeSql.All.csproj | 2 +- FreeSql.DbContext/FreeSql.DbContext.csproj | 2 +- FreeSql.Repository/FreeSql.Repository.csproj | 2 +- FreeSql/FreeSql.csproj | 2 +- .../FreeSql.Provider.ClickHouse.csproj | 2 +- .../FreeSql.Provider.Custom.csproj | 2 +- .../FreeSql.Provider.Dameng.csproj | 2 +- .../FreeSql.Provider.Duckdb.csproj | 2 +- .../FreeSql.Provider.Firebird.csproj | 2 +- .../FreeSql.Provider.GBase.csproj | 2 +- .../FreeSql.Provider.KingbaseES.csproj | 2 +- .../FreeSql.Provider.MsAccess.csproj | 2 +- .../FreeSql.Provider.MySql.csproj | 2 +- .../FreeSql.Provider.MySqlConnector.csproj | 2 +- .../FreeSql.Provider.Odbc.csproj | 2 +- .../FreeSql.Provider.Oracle.csproj | 2 +- .../FreeSql.Provider.OracleOledb.csproj | 2 +- .../FreeSql.Provider.PostgreSQL.csproj | 2 +- .../FreeSql.Provider.QuestDb.csproj | 2 +- .../FreeSql.Provider.ShenTong.csproj | 2 +- .../FreeSql.Provider.SqlServer.csproj | 2 +- ...FreeSql.Provider.SqlServerForSystem.csproj | 2 +- .../FreeSql.Provider.Sqlite.csproj | 2 +- .../FreeSql.Provider.SqliteCore.csproj | 2 +- .../FreeSql.Provider.TDengine.csproj | 2 +- .../FreeSql.Provider.Xugu.csproj | 2 +- 36 files changed, 73 insertions(+), 60 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 4e10d6430..5cba14d94 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,7 +12,7 @@ diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 8b7a867fa..ac5da7b76 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -581,7 +581,7 @@ namespace base_entity .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=3;AllowLoadLocalInfile=true") - //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true") + .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true") //.UseAdoConnectionPool(false) //.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=127.0.0.1;Port=5432;Username=postgres;Password=123456;Database=tedb;Pooling=true;Maximum Pool Size=2") ////.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=127.0.0.1;Port=5432;Username=postgres;Password=123456;Database=toc;Pooling=true;Maximum Pool Size=2") @@ -622,8 +622,36 @@ namespace base_entity #endregion + fsql.Delete().Where("1=1").ExecuteAffrows(); + var repoxx = fsql.GetRepository(); + repoxx.DbContextOptions.EnableCascadeSave = true; + repoxx.DbContextOptions.NoneParameter = true; + repoxx.Insert(new VM_District_Child + { + Code = "100000", + Name = "中国", + Childs = new List(new[] { + new VM_District_Child + { + Code = "110000", + Name = "北京", + Childs = new List(new[] { + new VM_District_Child{ Code="110100", Name = "北京市" }, + new VM_District_Child{ Code="110101", Name = "东城区" }, + }) + } + }) + }); + var ttre1 = fsql.Select().Where(a => a.Name == "中国") + .AsTreeCte(pathSelector: a => $"[{a.Name}]{a.Code}", pathSeparator: "=>") + .OrderBy(a => a.Code).ToTreeList(); + fsql.Select().Where(a => a.Name == "中国") + .AsTreeCte(pathSelector: a => $"[{a.Name}]{a.Code}", pathSeparator: "=>") + .OrderBy(a => a.Code).InsertInto("VM_District_Child_Copy", a => new VM_District_Child { Code = a.Code, Name = a.Name }); + var usergroupRepository = fsql.GetAggregateRootRepository(); usergroupRepository.Delete(a => true); + usergroupRepository.Orm.Delete().Where(a => true).ExecuteAffrows(); usergroupRepository.Insert(new[]{ new UserGroup { @@ -649,9 +677,18 @@ namespace base_entity new User1 { Nickname = "nickname21", Username = "username21", Description = "desc21" }, new User1 { Nickname = "nickname22", Username = "username22", Description = "desc22" }, new User1 { Nickname = "nickname23", Username = "username23", Description = "desc23" }, + new User1 { Nickname = "nickname24", Username = "username24", Description = "desc24" }, } }, }); + Task.Run(async () => + { + await foreach (var xxs1 in fsql.Select().WithTempQuery(a => new { a.Nickname, a.Username }).ToChunkAsyncEnumerable(2)) + { + foreach (var item in xxs1) + Console.WriteLine(item.Nickname); + } + }).Wait(); var ugroupFirst = usergroupRepository.Select.First(); ugroupFirst.Sort++; usergroupRepository.Update(ugroupFirst); @@ -955,30 +992,6 @@ namespace base_entity - fsql.Delete().Where("1=1").ExecuteAffrows(); - var repoxx = fsql.GetRepository(); - repoxx.DbContextOptions.EnableCascadeSave = true; - repoxx.DbContextOptions.NoneParameter = true; - repoxx.Insert(new VM_District_Child - { - Code = "100000", - Name = "中国", - Childs = new List(new[] { - new VM_District_Child - { - Code = "110000", - Name = "北京", - Childs = new List(new[] { - new VM_District_Child{ Code="110100", Name = "北京市" }, - new VM_District_Child{ Code="110101", Name = "东城区" }, - }) - } - }) - }); - var ttre1 = fsql.Select().Where(a => a.Name == "中国") - .AsTreeCte(pathSelector: a => $"[{a.Name}]{a.Code}", pathSeparator: "=>") - .OrderBy(a => a.Code).ToTreeList(); ; - var list111222 = fsql.Select() .InnerJoin((l, p) => l.ProductId == p.ID) .GroupBy((l, p) => new { p.ID, ShopType = l.ShopType ?? 0 }) diff --git a/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj b/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj index 30974e66e..4401a91f9 100644 --- a/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj +++ b/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.208 + 3.5.209 readme.md diff --git a/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj b/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj index 2899e8bd8..64f6f37d9 100644 --- a/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj +++ b/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj @@ -19,7 +19,7 @@ key.snk false latest - 3.5.208 + 3.5.209 readme.md diff --git a/Extensions/FreeSql.Extensions.EFModel/FreeSql.Extensions.EFModel.csproj b/Extensions/FreeSql.Extensions.EFModel/FreeSql.Extensions.EFModel.csproj index ced5a01f9..0620f3db6 100644 --- a/Extensions/FreeSql.Extensions.EFModel/FreeSql.Extensions.EFModel.csproj +++ b/Extensions/FreeSql.Extensions.EFModel/FreeSql.Extensions.EFModel.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.208 + 3.5.209 readme.md diff --git a/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj b/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj index 49026923b..da9050aa8 100644 --- a/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj +++ b/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.208 + 3.5.209 readme.md diff --git a/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj b/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj index f459be07a..9b3ae104c 100644 --- a/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj +++ b/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.5.208 + 3.5.209 readme.md diff --git a/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj b/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj index c6bd0908b..4b9ac2790 100644 --- a/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj +++ b/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.208 + 3.5.209 readme.md diff --git a/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj b/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj index 697d6308c..966cdb3be 100644 --- a/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj +++ b/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.208 + 3.5.209 readme.md diff --git a/Extensions/FreeSql.Generator/FreeSql.Generator.csproj b/Extensions/FreeSql.Generator/FreeSql.Generator.csproj index 67e1820f1..0a58a7948 100644 --- a/Extensions/FreeSql.Generator/FreeSql.Generator.csproj +++ b/Extensions/FreeSql.Generator/FreeSql.Generator.csproj @@ -13,7 +13,7 @@ https://github.com/2881099/FreeSql https://github.com/2881099/FreeSql FreeSql DbFirst 实体生成器 - 3.5.208 + 3.5.209 readme.md diff --git a/FreeSql.All/FreeSql.All.csproj b/FreeSql.All/FreeSql.All.csproj index fb185f8c3..c5b71346c 100644 --- a/FreeSql.All/FreeSql.All.csproj +++ b/FreeSql.All/FreeSql.All.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.5.208 + 3.5.209 readme.md diff --git a/FreeSql.DbContext/FreeSql.DbContext.csproj b/FreeSql.DbContext/FreeSql.DbContext.csproj index 8c1c32e71..a2291855b 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.csproj +++ b/FreeSql.DbContext/FreeSql.DbContext.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.5.208 + 3.5.209 readme.md diff --git a/FreeSql.Repository/FreeSql.Repository.csproj b/FreeSql.Repository/FreeSql.Repository.csproj index d0be4b762..0cb166033 100644 --- a/FreeSql.Repository/FreeSql.Repository.csproj +++ b/FreeSql.Repository/FreeSql.Repository.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.5.208 + 3.5.209 readme.md diff --git a/FreeSql/FreeSql.csproj b/FreeSql/FreeSql.csproj index 0a3c14373..55e7f38ef 100644 --- a/FreeSql/FreeSql.csproj +++ b/FreeSql/FreeSql.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.5.208 + 3.5.209 readme.md diff --git a/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj b/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj index 4401a91f9..17f443747 100644 --- a/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj +++ b/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.209 + 3.5.210-preview20250626 readme.md diff --git a/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj b/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj index 64f6f37d9..d0b45dafe 100644 --- a/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj +++ b/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj @@ -19,7 +19,7 @@ key.snk false latest - 3.5.209 + 3.5.210-preview20250626 readme.md diff --git a/Extensions/FreeSql.Extensions.EFModel/FreeSql.Extensions.EFModel.csproj b/Extensions/FreeSql.Extensions.EFModel/FreeSql.Extensions.EFModel.csproj index 0620f3db6..2f787e084 100644 --- a/Extensions/FreeSql.Extensions.EFModel/FreeSql.Extensions.EFModel.csproj +++ b/Extensions/FreeSql.Extensions.EFModel/FreeSql.Extensions.EFModel.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.209 + 3.5.210-preview20250626 readme.md diff --git a/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj b/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj index da9050aa8..271479e85 100644 --- a/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj +++ b/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.209 + 3.5.210-preview20250626 readme.md diff --git a/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj b/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj index 9b3ae104c..04d4526f2 100644 --- a/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj +++ b/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.5.209 + 3.5.210-preview20250626 readme.md diff --git a/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj b/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj index 4b9ac2790..99de0087f 100644 --- a/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj +++ b/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.209 + 3.5.210-preview20250626 readme.md diff --git a/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj b/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj index 966cdb3be..43f3049f0 100644 --- a/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj +++ b/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.209 + 3.5.210-preview20250626 readme.md diff --git a/Extensions/FreeSql.Generator/FreeSql.Generator.csproj b/Extensions/FreeSql.Generator/FreeSql.Generator.csproj index 0a58a7948..85bce4944 100644 --- a/Extensions/FreeSql.Generator/FreeSql.Generator.csproj +++ b/Extensions/FreeSql.Generator/FreeSql.Generator.csproj @@ -13,7 +13,7 @@ https://github.com/2881099/FreeSql https://github.com/2881099/FreeSql FreeSql DbFirst 实体生成器 - 3.5.209 + 3.5.210-preview20250626 readme.md diff --git a/FreeSql.All/FreeSql.All.csproj b/FreeSql.All/FreeSql.All.csproj index c5b71346c..e8a2c3423 100644 --- a/FreeSql.All/FreeSql.All.csproj +++ b/FreeSql.All/FreeSql.All.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.5.209 + 3.5.210-preview20250626 readme.md diff --git a/FreeSql.DbContext/FreeSql.DbContext.csproj b/FreeSql.DbContext/FreeSql.DbContext.csproj index a2291855b..34a8aeb41 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.csproj +++ b/FreeSql.DbContext/FreeSql.DbContext.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.5.209 + 3.5.210-preview20250626 readme.md diff --git a/FreeSql.Repository/FreeSql.Repository.csproj b/FreeSql.Repository/FreeSql.Repository.csproj index 0cb166033..055562a66 100644 --- a/FreeSql.Repository/FreeSql.Repository.csproj +++ b/FreeSql.Repository/FreeSql.Repository.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.5.209 + 3.5.210-preview20250626 readme.md diff --git a/FreeSql/FreeSql.csproj b/FreeSql/FreeSql.csproj index 55e7f38ef..8f194f20d 100644 --- a/FreeSql/FreeSql.csproj +++ b/FreeSql/FreeSql.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.5.209 + 3.5.210-preview20250626 readme.md