qidao123.com技术社区-IT企服评测·应用市场
标题:
SQLSugar 支持 TDengine 超等表的使用指南
[打印本页]
作者:
自由的羽毛
时间:
2025-2-27 15:40
标题:
SQLSugar 支持 TDengine 超等表的使用指南
TDengine 是一款高性能、分布式的时序数据库,广泛应用于物联网、工业互联网等范畴。其核心概念之一是
超等表(Super Table)
,它类似于传统数据库中的表结构模板,允许用户通过标签(Tag)动态创建和管理子表。SQLSugar 作为一款流行的 ORM 框架,提供了对 TDengine 超等表的支持,使得开发者可以或许更方便地操纵 TDengine 数据库。
本文将介绍怎样使用 SQLSugar 操纵 TDengine 的超等表,包罗创建超等表、查询子表、插入数据等操纵。
1. 创建超等表
在使用 TDengine 的超等表之前,首先需要在数据库中创建超等表。SQLSugar 提供了 CodeFirst 模式,可以通过代码自动创建表结构。
NUGET安装
SqlSugar.TDengineCore 最新
SqlSugarCore 最新
创建数据库对象
//程序启动时加入
InstanceFactory.CustomAssemblies =
new System.Reflection.Assembly[] { typeof(TDengineProvider).Assembly };
//创建 db对象
var db = new SqlSugarClient(new ConnectionConfig()
{
DbType = SqlSugar.DbType.TDengine,
ConnectionString = Config.ConnectionString,
IsAutoCloseConnection = true,
ConfigureExternalServices = new ConfigureExternalServices()
{
EntityService= (property, column) =>
{
if (column.SqlParameterDbType == null)
{
//需要给列加上通用转换,这样实体就不需要一个一个转了
column.SqlParameterDbType = typeof(CommonPropertyConvert);
}
}
}
});
// 创建超级表
db.CodeFirst.InitTables<SUsingTagModel>();
复制代码
在上述代码中,SUsingTagModel 是一个实体类,它映射了 TDengine 中的超等表结构。通过 CodeFirst.InitTables 方法,SQLSugar 会自动在 TDengine 中创建对应的超等表。
2. 定义超等表实体类
在 SQLSugar 中,超等表的实体类需要使用 STableAttribute 来标记,并通过 SugarColumn 来定义字段属性。
[STableAttribute(STableName = "SUsingTagModel", Tag1 = nameof(Tag1))]
public class SUsingTagModel
{
[SqlSugar.SugarColumn(IsPrimaryKey = true)]
public DateTime Ts { get; set; }
public bool Boolean { get; set; }
public string Tag1 { get; set; }
}
复制代码
STableAttribute 用于标记该类为超等表,STableName 指定超等表的名称,Tag1 指定标签字段。
SugarColumn 用于定义字段属性,IsPrimaryKey 表现该字段为主键。
3. 查询超等表数据
SQLSugar 提供了 AsTDengineSTable 方法,用于将查询操纵映射到 TDengine 的超等表。
查询所有数据
var list1 = db.Queryable<SUsingTagModel>().AsTDengineSTable().ToList();
复制代码
查询特定子表数据
通过 Where 条件可以查询特定标签的子表数据。
// 查询子表A
var tagA = db.Queryable<SUsingTagModel>().AsTDengineSTable().Where(it => it.Tag1 == "a").ToList();
// 查询子表B
var tagB = db.Queryable<SUsingTagModel>().AsTDengineSTable().Where(it => it.Tag1 == "b").ToList();
复制代码
4. 插入数据并动态创建子表
在插入数据时,SQLSugar 支持根据标签值动态创建子表。通过 SetTDengineChildTableName 方法,可以指定子表的定名规则。
db.Insertable(new List<SUsingTagModel>(){
new SUsingTagModel()
{
Boolean = true,
Tag1 = "a",
Ts = DateTime.Now.AddMilliseconds(1)
},
new SUsingTagModel()
{
Boolean = true,
Tag1 = "b",
Ts = DateTime.Now.AddMilliseconds(3)
}
})
.SetTDengineChildTableName((stableName, it) => $"{stableName}_{it.Tag1}")
.ExecuteCommand();
复制代码
SetTDengineChildTableName 方法用于指定子表的定名规则,stableName 是超等表的名称,it 是当前插入的数据对象。
ExecuteCommand 方法执行插入操纵,并自动创建子表。
5. 动态映射超等表名称
在某些场景下,可能需要动态修改超等表的名称。SQLSugar 提供了 MappingSTableName 方法,可以在运行时动态映射超等表名称。
db.MappingSTableName<SUsingTagModel>("newSName001");
复制代码
MappingSTableName 方法用于动态修改超等表的名称,更换实体类中 STableAttribute 的 STableName 属性。
6. 总结
通过 SQLSugar 对 TDengine 超等表的支持,开发者可以更方便地操纵 TDengine 数据库。本文介绍了怎样使用 SQLSugar 创建超等表、查询子表、插入数据以及动态映射超等表名称。这些功能使得 SQLSugar 成为处理 TDengine 数据的强大工具,尤其适用于物联网、工业互联网等时序数据处理场景。
在实际开发中,开发者可以根据业务需求灵活运用这些功能,提升开发效率并优化数据库操纵性能。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/)
Powered by Discuz! X3.4