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;