From 034b4735f4eb43aba5f15964b10124320b25851f Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Mon, 1 Aug 2022 17:36:32 +0800 Subject: [PATCH] =?UTF-8?q?v3.2.666-preview20220803=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=20Clickhouse=20Insert=20AsTable=20=E8=A1=A8=E5=90=8D=E5=A4=84?= =?UTF-8?q?=E7=90=86=20bug=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Directory.Build.props | 2 +- Examples/base_entity/Program.cs | 45 +++++++++++++++++++ .../Curd/ClickHouseInsert.cs | 8 ++-- 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index ee7d140b..c0da8d0f 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -9,7 +9,7 @@ - 3.2.666-preview20220802 + 3.2.666-preview20220803 diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 37cf7a4e..41cfdcbd 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -296,6 +296,22 @@ namespace base_entity Task.WaitAll(tasks.ToArray()); } + class TreeModel + { + public int id { get; set; } + public int parentid { get; set; } + public string code { get; set; } + + [Navigate(nameof(parentid))] + public TreeModel Parent { get; set; } + [Navigate(nameof(parentid))] + public List Childs { get; set; } + } + + class DateModel + { + public DateTime Date { get; set; } + } static void Main(string[] args) { #region 初始化 IFreeSql @@ -345,11 +361,40 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion + fsql.CodeFirst.ConfigEntity(a => + { + a.Name("FSCHEDULER"); + }); + + var dates = Enumerable.Range(0, 5) + .Select(a => new DateModel { Date = DateTime.Parse("2022-08-01").AddDays(a) }) + .ToArray(); + var datesSql1 = fsql.Select() + .GroupBy(a => a.CreateTime.Date) + .WithTempQuery(a => new + { + date = a.Key, + sum1 = a.Sum(a.Value.Nickname.Length) + }) + .FromQuery(fsql.Select().WithMemory(dates)) + .RightJoin((a, b) => a.date == b.Date) + .ToSql(); + + + + var treeSql1 = fsql.Select() + .WhereCascade(a => a.code == "xxx") + .Where(a => a.id == 123) + .AsTreeCte() + .ToSql(); + var list = new List(); list.Add(new User1 { Id = Guid.NewGuid() }); list.Add(new User1 { Id = Guid.NewGuid() }); list.Add(new User1 { Id = Guid.NewGuid() }); + var listSql3 = fsql.InsertOrUpdate().IfExistsDoNothing().SetSource(list).ToSql(); + var listSql = fsql.Select() .WithMemory(list) .ToSql(); diff --git a/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseInsert.cs b/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseInsert.cs index d3273358..dd4855de 100644 --- a/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseInsert.cs +++ b/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseInsert.cs @@ -57,14 +57,14 @@ namespace FreeSql.ClickHouse.Curd { before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, null, _params); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); + var data = ToDataTable(); using (var conn = _orm.Ado.MasterPool.Get()) { using var bulkCopyInterface = new ClickHouseBulkCopy(conn.Value as ClickHouseConnection) { - DestinationTableName = _table.DbName, + DestinationTableName = data.TableName, BatchSize = _source.Count }; - var data = ToDataTable(); bulkCopyInterface.WriteToServerAsync(data, default).Wait(); } return affrows; @@ -167,14 +167,14 @@ namespace FreeSql.ClickHouse.Curd { before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Insert, null, _params); _orm.Aop.CurdBeforeHandler?.Invoke(this, before); + var data = ToDataTable(); using (var conn = await _orm.Ado.MasterPool.GetAsync()) { using var bulkCopyInterface = new ClickHouseBulkCopy(conn.Value as ClickHouseConnection) { - DestinationTableName = _table.DbName, + DestinationTableName = data.TableName, BatchSize = _source.Count }; - var data = ToDataTable(); await bulkCopyInterface.WriteToServerAsync(data, default); } return affrows;