diff --git a/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/CodeFirst/CKTable.cs b/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/CodeFirst/CKTable.cs new file mode 100644 index 000000000..a901e595a --- /dev/null +++ b/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/CodeFirst/CKTable.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SqlSugar.ClickHouse +{ + [AttributeUsage(AttributeTargets.Class, Inherited = true)] + public class CKTable : Attribute + { + public string engineValue { get; set; } + public CKTable(string engineValue) + { + this.engineValue = engineValue; + } + } +} diff --git a/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/CodeFirst/ClickHouseCodeFirst.cs b/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/CodeFirst/ClickHouseCodeFirst.cs index 2afed65cf..649d3abd2 100644 --- a/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/CodeFirst/ClickHouseCodeFirst.cs +++ b/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/CodeFirst/ClickHouseCodeFirst.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Text; namespace SqlSugar.ClickHouse @@ -40,6 +41,10 @@ namespace SqlSugar.ClickHouse } } columns = columns.OrderBy(it => it.IsPrimarykey ? 0 : 1).ToList(); + if (entityInfo.Type.GetCustomAttribute() != null) + { + tableName = (tableName + UtilConstants.ReplaceKey + entityInfo.Type.GetCustomAttribute().engineValue); + } this.Context.DbMaintenance.CreateTable(tableName, columns,true); } protected override DbColumnInfo EntityColumnToDbColumn(EntityInfo entityInfo, string tableName, EntityColumnInfo item) diff --git a/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/DbMaintenance/ClickHouseDbMaintenance.cs b/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/DbMaintenance/ClickHouseDbMaintenance.cs index aadd0e4e3..5172b3580 100644 --- a/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/DbMaintenance/ClickHouseDbMaintenance.cs +++ b/Src/Asp.NetCore2/SqlSugar.ClickHouseCore/ClickHouse/DbMaintenance/ClickHouseDbMaintenance.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.Text.RegularExpressions; namespace SqlSugar.ClickHouse { @@ -338,6 +339,14 @@ namespace SqlSugar.ClickHouse } protected override string GetCreateTableSql(string tableName, List columns) { + string engineEq = null; + if (tableName.Contains(UtilConstants.ReplaceKey)) + { + var tableInfos = Regex.Split(tableName, UtilConstants.ReplaceKey); + tableName = tableInfos.First(); + engineEq = tableInfos.Last(); + } + List columnArray = new List(); Check.Exception(columns.IsNullOrEmpty(), "No columns found "); var pkName = ""; @@ -365,7 +374,11 @@ namespace SqlSugar.ClickHouse } } string tableString = string.Format(this.CreateTableSql, this.SqlBuilder.GetTranslationTableName(tableName.ToLower(isLower)), string.Join(",\r\n", columnArray)); - if (pkName.HasValue()) + if (engineEq.HasValue()) + { + tableString += (" "+ engineEq); + } + else if (pkName.HasValue()) { pkName = this.SqlBuilder.GetTranslationColumnName(pkName); tableString += $"ENGINE = MergeTree() ORDER BY ( {pkName} ) PRIMARY KEY {pkName} SETTINGS index_granularity = 8192";