Update TDengine

This commit is contained in:
sunkaixuan 2025-02-26 15:52:49 +08:00
parent 128a7ac8a3
commit 6bde63bb39
3 changed files with 69 additions and 0 deletions

View File

@ -18,7 +18,24 @@ namespace SqlSugar.TDengine
var tableName = GetTableName(entityInfo); var tableName = GetTableName(entityInfo);
var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName, false); var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName, false);
ConvertColumns(dbColumns); ConvertColumns(dbColumns);
var attr = entityInfo.Type.GetCustomAttribute<STableAttribute>();
var entityColumns = entityInfo.Columns.Where(it => it.IsIgnore == false).ToList(); var entityColumns = entityInfo.Columns.Where(it => it.IsIgnore == false).ToList();
if (attr != null && attr.Tag1 != null)
{
entityColumns = entityInfo.Columns.Where(it => it.IsIgnore == false
|| it.DbColumnName?.ToLower() == attr.Tag1?.ToLower()
|| it.DbColumnName?.ToLower() == attr.Tag2?.ToLower()
|| it.DbColumnName?.ToLower() == attr.Tag3?.ToLower()
|| it.DbColumnName?.ToLower() == attr.Tag4?.ToLower()
).ToList();
foreach (var item in entityColumns)
{
if (item.DbColumnName == null)
{
item.DbColumnName = item.PropertyName;
}
}
}
var dropColumns = dbColumns var dropColumns = dbColumns
.Where(dc => !entityColumns.Any(ec => dc.DbColumnName.Equals(ec.OldDbColumnName, StringComparison.CurrentCultureIgnoreCase))) .Where(dc => !entityColumns.Any(ec => dc.DbColumnName.Equals(ec.OldDbColumnName, StringComparison.CurrentCultureIgnoreCase)))
.Where(dc => !entityColumns.Any(ec => dc.DbColumnName.Equals(ec.DbColumnName, StringComparison.CurrentCultureIgnoreCase))) .Where(dc => !entityColumns.Any(ec => dc.DbColumnName.Equals(ec.DbColumnName, StringComparison.CurrentCultureIgnoreCase)))

View File

@ -0,0 +1,45 @@
using SqlSugar.TDengine;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
namespace SqlSugar
{
public class TagInserttable<T> where T : class, new()
{
internal IInsertable<T> thisValue;
internal Func<string, T, string> getChildTableNamefunc;
public int ExecuteCommand()
{
var provider = (InsertableProvider<T>) thisValue;
var inserObjects = provider.InsertObjs;
var attr = typeof(T).GetCustomAttribute<STableAttribute>();
Check.ExceptionEasy(attr == null|| attr?.Tag1==null, $"", $"{nameof(T)}缺少特性STableAttribute和Tag1");
// 根据所有非空的 Tag 进行分组
var groups = inserObjects.GroupBy(it =>
{
// 动态生成分组键
var groupKey = new List<string>();
if (attr.Tag1 != null)
groupKey.Add(it.GetType().GetProperty(attr.Tag1)?.GetValue(it)?.ToString());
if (attr.Tag2 != null)
groupKey.Add(it.GetType().GetProperty(attr.Tag2)?.GetValue(it)?.ToString());
if (attr.Tag3 != null)
groupKey.Add(it.GetType().GetProperty(attr.Tag3)?.GetValue(it)?.ToString());
if (attr.Tag4 != null)
groupKey.Add(it.GetType().GetProperty(attr.Tag4)?.GetValue(it)?.ToString());
// 将非空的 Tag 值用下划线连接作为分组键
return string.Join("_", groupKey.Where(k => !string.IsNullOrEmpty(k)));
});
return inserObjects.Count();
}
}
}

View File

@ -9,6 +9,13 @@ namespace SqlSugar.TDengine
/// </summary> /// </summary>
public static class UtilExtensions public static class UtilExtensions
{ {
public static TagInserttable<T> SetTDengineChildTableName<T>(this IInsertable<T> thisValue,Func<string,T,string> getChildTableNamefunc) where T:class,new()
{
TagInserttable<T> result = new TagInserttable<T>();
result.thisValue = thisValue;
result.getChildTableNamefunc = getChildTableNamefunc;
return result;
}
public static string ObjToStringNoTrim(this object thisValue) public static string ObjToStringNoTrim(this object thisValue)
{ {
if (thisValue != null) return thisValue.ToString(); if (thisValue != null) return thisValue.ToString();