From d91c7fbdfd64fc9dc18a997560d7aeb480b64a3a Mon Sep 17 00:00:00 2001 From: d4ilys <963922242@qq.com> Date: Tue, 21 Nov 2023 11:40:22 +0800 Subject: [PATCH] =?UTF-8?q?Clickhouse=20Array=E6=B3=9B=E5=9E=8B=E6=8F=92?= =?UTF-8?q?=E5=85=A5=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClickHouse/ClickHouseTest3.cs | 31 ++++++++++++++++++- FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml | 5 +++ .../AdoProvider/AdoProviderUtils.cs | 2 +- .../ClickHouseUtils.cs | 2 +- 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/FreeSql.Tests/FreeSql.Tests/ClickHouse/ClickHouseTest3.cs b/FreeSql.Tests/FreeSql.Tests/ClickHouse/ClickHouseTest3.cs index 953eef71..87abfe4c 100644 --- a/FreeSql.Tests/FreeSql.Tests/ClickHouse/ClickHouseTest3.cs +++ b/FreeSql.Tests/FreeSql.Tests/ClickHouse/ClickHouseTest3.cs @@ -114,7 +114,22 @@ namespace FreeSql.Tests.ClickHouse [Fact] public void ArrayBoolMappingSync() { - _fsql.CodeFirst.SyncStructure(typeof(ArrayMappingTest)); + _fsql.CodeFirst.SyncStructure(typeof(ArrayMappingTestSimple)); + } + + /// + /// 测试Array类型映射 + /// + [Fact] + public void ArrayBoolMappingInsert() + { + _ = _fsql.Insert(new ArrayMappingTestSimple + { + Name = "daily", + Tags1 = new List() { "a", "b", "c" }, + Tags2 = new List() { 1, 2, 3, 4 }, + Tags3 = new List() { true, true, false } + }).ExecuteAffrows(); } } @@ -153,4 +168,18 @@ namespace FreeSql.Tests.ClickHouse [Column(Name = "tags7")] public IEnumerable Tags7 { get; set; } } + + [Table(Name = "table_test_array_simple")] + public class ArrayMappingTestSimple + + { + [Column(Name = "name", IsPrimary = true)] + public string Name { get; set; } + + [Column(Name = "tags1")] public IEnumerable Tags1 { get; set; } + + [Column(Name = "tags2")] public List Tags2 { get; set; } + + [Column(Name = "tags3")] public IEnumerable Tags3 { get; set; } + } } \ No newline at end of file diff --git a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml index 5f515a4c..a4862081 100644 --- a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml +++ b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml @@ -34,6 +34,11 @@ 测试Array类型映射 + + + 测试Array类型映射 + + 实时数据 diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderUtils.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderUtils.cs index a5461a4d..001c2b4e 100644 --- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderUtils.cs +++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderUtils.cs @@ -43,7 +43,7 @@ namespace FreeSql.Internal.CommonProvider sb.Append(AddslashesProcessParam(z, mapType, mapColumn)); } - return sb.Length == 0 ? "(NULL)" : sb.Remove(0, 1).Insert(0, "(").Append(")").ToString(); + return sb.Length == 0 ? "(NULL)" : sb.Remove(0, 1).Insert(0, "[").Append("]").ToString(); } public static bool IsFromSlave(string cmdText) diff --git a/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs b/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs index c2ec7634..38a74d35 100644 --- a/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs +++ b/Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs @@ -146,7 +146,7 @@ namespace FreeSql.ClickHouse } public override string GetNoneParamaterSqlValue(List specialParams, string specialParamFlag, ColumnInfo col, Type type, object value) - { + { if (value == null) return "NULL"; if (type.IsNumberType()) return string.Format(CultureInfo.InvariantCulture, "{0}", value); if (type == typeof(byte[])) return $"0x{CommonUtils.BytesSqlRaw(value as byte[])}";