SQLSugar 支持 TDengine 超等表的使用指南

打印 上一主题 下一主题

主题 907|帖子 907|积分 2721

TDengine 是一款高性能、分布式的时序数据库,广泛应用于物联网、工业互联网等范畴。其核心概念之一是超等表(Super Table),它类似于传统数据库中的表结构模板,允许用户通过标签(Tag)动态创建和管理子表。SQLSugar 作为一款流行的 ORM 框架,提供了对 TDengine 超等表的支持,使得开发者可以或许更方便地操纵 TDengine 数据库。
本文将介绍怎样使用 SQLSugar 操纵 TDengine 的超等表,包罗创建超等表、查询子表、插入数据等操纵。
1. 创建超等表

在使用 TDengine 的超等表之前,首先需要在数据库中创建超等表。SQLSugar 提供了 CodeFirst 模式,可以通过代码自动创建表结构。
NUGET安装
SqlSugar.TDengineCore 最新
SqlSugarCore  最新
创建数据库对象
  1. //程序启动时加入
  2. InstanceFactory.CustomAssemblies =
  3. new System.Reflection.Assembly[] { typeof(TDengineProvider).Assembly };
  4. //创建 db对象   
  5. var db = new SqlSugarClient(new ConnectionConfig()
  6.   {
  7.       DbType = SqlSugar.DbType.TDengine,
  8.       ConnectionString = Config.ConnectionString,
  9.       IsAutoCloseConnection = true,
  10.       ConfigureExternalServices = new ConfigureExternalServices()
  11.       {
  12.            EntityService= (property, column) =>
  13.            {
  14.                if (column.SqlParameterDbType == null)
  15.                {
  16.                    //需要给列加上通用转换,这样实体就不需要一个一个转了
  17.                    column.SqlParameterDbType = typeof(CommonPropertyConvert);
  18.                }
  19.            }
  20.       }
  21.   });
  22. // 创建超级表
  23. db.CodeFirst.InitTables<SUsingTagModel>();
复制代码
在上述代码中,SUsingTagModel 是一个实体类,它映射了 TDengine 中的超等表结构。通过 CodeFirst.InitTables 方法,SQLSugar 会自动在 TDengine 中创建对应的超等表。
2. 定义超等表实体类

在 SQLSugar 中,超等表的实体类需要使用 STableAttribute 来标记,并通过 SugarColumn 来定义字段属性。
 
  1. [STableAttribute(STableName = "SUsingTagModel", Tag1 = nameof(Tag1))]
  2. public class SUsingTagModel
  3. {
  4.     [SqlSugar.SugarColumn(IsPrimaryKey = true)]
  5.     public DateTime Ts { get; set; }
  6.     public bool Boolean { get; set; }
  7.     public string Tag1 { get; set; }
  8. }
复制代码

  • STableAttribute 用于标记该类为超等表,STableName 指定超等表的名称,Tag1 指定标签字段。
  • SugarColumn 用于定义字段属性,IsPrimaryKey 表现该字段为主键。
3. 查询超等表数据

SQLSugar 提供了 AsTDengineSTable 方法,用于将查询操纵映射到 TDengine 的超等表。
查询所有数据
  1. var list1 = db.Queryable<SUsingTagModel>().AsTDengineSTable().ToList();
复制代码
查询特定子表数据

通过 Where 条件可以查询特定标签的子表数据。
  1. // 查询子表A
  2. var tagA = db.Queryable<SUsingTagModel>().AsTDengineSTable().Where(it => it.Tag1 == "a").ToList();
  3. // 查询子表B
  4. var tagB = db.Queryable<SUsingTagModel>().AsTDengineSTable().Where(it => it.Tag1 == "b").ToList();
复制代码
4. 插入数据并动态创建子表

在插入数据时,SQLSugar 支持根据标签值动态创建子表。通过 SetTDengineChildTableName 方法,可以指定子表的定名规则。
  1. db.Insertable(new List<SUsingTagModel>(){
  2.     new SUsingTagModel()
  3.     {
  4.         Boolean = true,
  5.         Tag1 = "a",
  6.         Ts = DateTime.Now.AddMilliseconds(1)
  7.     },
  8.     new SUsingTagModel()
  9.     {
  10.         Boolean = true,
  11.         Tag1 = "b",
  12.         Ts = DateTime.Now.AddMilliseconds(3)
  13.     }
  14. })
  15. .SetTDengineChildTableName((stableName, it) => $"{stableName}_{it.Tag1}")
  16. .ExecuteCommand();
复制代码

  • SetTDengineChildTableName 方法用于指定子表的定名规则,stableName 是超等表的名称,it 是当前插入的数据对象。
  • ExecuteCommand 方法执行插入操纵,并自动创建子表。
5. 动态映射超等表名称

在某些场景下,可能需要动态修改超等表的名称。SQLSugar 提供了 MappingSTableName 方法,可以在运行时动态映射超等表名称。
  1. db.MappingSTableName<SUsingTagModel>("newSName001");
复制代码

  • MappingSTableName 方法用于动态修改超等表的名称,更换实体类中 STableAttribute 的 STableName 属性。
6. 总结

通过 SQLSugar 对 TDengine 超等表的支持,开发者可以更方便地操纵 TDengine 数据库。本文介绍了怎样使用 SQLSugar 创建超等表、查询子表、插入数据以及动态映射超等表名称。这些功能使得 SQLSugar 成为处理 TDengine 数据的强大工具,尤其适用于物联网、工业互联网等时序数据处理场景。
在实际开发中,开发者可以根据业务需求灵活运用这些功能,提升开发效率并优化数据库操纵性能。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

自由的羽毛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表