Update TDengine Stable CodeFirst

This commit is contained in:
sunkaixuan 2023-11-18 23:49:43 +08:00
parent d8b0f13916
commit bc269029dc
3 changed files with 31 additions and 2 deletions

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace SqlSugar.TDengine
{
public class STableAttribute:Attribute
{
public string Tags { get; set; }
public string STablelName { get; set; }
}
}

View File

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Text; using System.Text;
namespace SqlSugar.TDengine namespace SqlSugar.TDengine
@ -119,12 +120,19 @@ namespace SqlSugar.TDengine
public override void NoExistLogic(EntityInfo entityInfo) public override void NoExistLogic(EntityInfo entityInfo)
{ {
List<DbColumnInfo> dbColumns = new List<DbColumnInfo>(); List<DbColumnInfo> dbColumns = new List<DbColumnInfo>();
foreach (var item in entityInfo.Columns.Where(it=>it.PropertyName!= "TagsTypeId").OrderBy(it=>it.UnderType==typeof(DateTime)?0:1)) foreach (var item in entityInfo.Columns.Where(it=>it.IsIgnore!=true).Where(it=>it.PropertyName!= "TagsTypeId").OrderBy(it=>it.UnderType==typeof(DateTime)?0:1))
{ {
var addItem = EntityColumnToDbColumn(entityInfo, entityInfo.DbTableName, item); var addItem = EntityColumnToDbColumn(entityInfo, entityInfo.DbTableName, item);
dbColumns.Add(addItem); dbColumns.Add(addItem);
} }
var attr = entityInfo.Type.GetCustomAttribute<STableAttribute>();
var oldTableName = entityInfo.DbTableName;
if (attr != null)
{
entityInfo.DbTableName += ("{stable}"+this.Context.Utilities.SerializeObject(attr));
}
this.Context.DbMaintenance.CreateTable(entityInfo.DbTableName, dbColumns); this.Context.DbMaintenance.CreateTable(entityInfo.DbTableName, dbColumns);
entityInfo.DbTableName = oldTableName;
} }
protected override DbColumnInfo EntityColumnToDbColumn(EntityInfo entityInfo, string tableName, EntityColumnInfo item) protected override DbColumnInfo EntityColumnToDbColumn(EntityInfo entityInfo, string tableName, EntityColumnInfo item)
{ {

View File

@ -328,7 +328,7 @@ namespace SqlSugar.TDengine
db.DbMaintenance.AddColumnRemark(item.DbColumnName, item.DbTableName, item.ColumnDescription); db.DbMaintenance.AddColumnRemark(item.DbColumnName, item.DbTableName, item.ColumnDescription);
} }
} }
//table remak //table remak
if (entity.TableDescription != null) if (entity.TableDescription != null)
{ {
@ -414,6 +414,15 @@ namespace SqlSugar.TDengine
string tableString = string.Format(this.CreateTableSql, this.SqlBuilder.GetTranslationTableName("STable_"+tableName.ToLower(isAutoToLowerCodeFirst)), string.Join(",\r\n", columnArray)); string tableString = string.Format(this.CreateTableSql, this.SqlBuilder.GetTranslationTableName("STable_"+tableName.ToLower(isAutoToLowerCodeFirst)), string.Join(",\r\n", columnArray));
var childTableName = this.SqlBuilder.GetTranslationTableName(tableName.ToLower(isAutoToLowerCodeFirst)); var childTableName = this.SqlBuilder.GetTranslationTableName(tableName.ToLower(isAutoToLowerCodeFirst));
var stableName = this.SqlBuilder.GetTranslationTableName("STable_"+tableName.ToLower(isAutoToLowerCodeFirst)); var stableName = this.SqlBuilder.GetTranslationTableName("STable_"+tableName.ToLower(isAutoToLowerCodeFirst));
var isAttr = tableName.Contains("{stable}");
if (isAttr)
{
var attr = this.Context.Utilities.DeserializeObject<STableAttribute>(tableName.Split("{stable}").Last());
stableName= this.SqlBuilder.GetTranslationTableName(attr.STablelName.ToLower(isAutoToLowerCodeFirst));
tableString = string.Format(this.CreateTableSql, stableName, string.Join(",\r\n", columnArray));
tableName=childTableName = this.SqlBuilder.GetTranslationTableName(tableName.Split("{stable}").First().ToLower(isAutoToLowerCodeFirst));
STable.Tags =this.Context.Utilities.DeserializeObject<List<ColumnTagInfo>>( attr.Tags);
}
if (STable.Tags?.Any() == true) if (STable.Tags?.Any() == true)
{ {
var colums = STable.Tags.Select(it => this.SqlBuilder.GetTranslationTableName(it.Name)+ " VARCHAR(20) "); var colums = STable.Tags.Select(it => this.SqlBuilder.GetTranslationTableName(it.Name)+ " VARCHAR(20) ");