当前位置: 首页 > news >正文

.NET 操作 TDengine .NET ORM

TDengine 

是国内比较流的时序库之一,支持群集并且免费,在.NET中资料比较少,这篇文章主要介绍SqlSugar ORM来操作TDengine

优点:

1、SqlSugar支持ADO.NET操作来实现TDengine,并且支持了常用的时间函数、支持联表、分页和批量插入和删等操作

2、使用了原生连接(非http连接 )保证了TDengine性能

 

TDengine 连接字符串

Host=localhost;Port=6030;Username=root;Password=taosdata;Database=power

TDengine 客户端SDK安装

当前程序需要安装Sdk才能连接数据库

https://docs.taosdata.com/connector

TDengine Nuegt安装

下面是NUGET安装

SqlSugar.TDengineCore
SqlSugarCore

执行SQL

    //建库db.Ado.ExecuteCommand("CREATE DATABASE IF NOT EXISTS power WAL_RETENTION_PERIOD 3600");//建超级表db.Ado.ExecuteCommand("CREATE STABLE IF NOT EXISTS  MyTable (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT)");//创建子表db.Ado.ExecuteCommand(@"create table IF NOT EXISTS  MyTable01 using MyTable tags('California.SanFrancisco',1)");//insert sql//db.Ado.ExecuteCommand(insrtSql);//查询子表var dt = db.Ado.GetDataTable("select * from MyTable01");//查询超级表var dt2 = db.Ado.GetDataTable("select * from MyTable");

单表查询

var list2 = db.Queryable<MyTable02>().Where(it => it.name == "测试2").ToList();var list22 = db.Queryable<MyTable02>().Where(it => it.voltage == 222).ToList();var list222 = db.Queryable<MyTable02>().Where(it => it.phase == 1.2).ToList();var list2222 = db.Queryable<MyTable02>().Where(it => it.isdelete == true).ToList();

联表查询

  //联表查询:不支持left join只能这样var list101= db.Queryable<MyTable02, MyTable02>((x, y) => x.ts == y.ts).Select((x,y) => new{xts=x.ts,yts=y.ts}).ToList();

函数用法

  //模糊查询var list3 = db.Queryable<MyTable02>().Where(it => it.name.Contains("a")).ToList();//时间差函数 var list31 = db.Queryable<MyTable02>().Select(it =>new{diff = SqlFunc.DateDiff(DateType.Day, it.ts, DateTime.Now),time=it.ts}).ToList();//时间加1天var list32 = db.Queryable<MyTable02>().Select(it =>new{addTime = SqlFunc.DateAdd(it.ts,1, DateType.Day),oldime = it.ts}).ToList();//自定义函数:实现时间加1天var list33 = db.Queryable<MyTable02>().Select(it =>new{addTime =SqlFunc.MappingColumn<DateTime>(" `ts`+1d "),oldime = it.ts}).ToList();

分页查询

   //分页var Count = 0;var list4 = db.Queryable<MyTable02>().Where(it => it.voltage == 111).ToPageList(1, 2, ref Count);

插入

超级表是不能插入的,我们只插入子表

//批量插入子表db.Insertable(GetInsertDatas()).ExecuteCommand();//子表实体public class MyTable02{[SugarColumn(IsPrimaryKey =true)]public DateTime ts { get; set; }public float current { get; set; }public bool isdelete { get; set; }public string name { get; set; }public int voltage { get; set; }public float phase { get; set; }[SugarColumn(IsOnlyIgnoreInsert =true,IsOnlyIgnoreUpdate =true)]//Tags字段禁止插入public string location { get; set; }[SugarColumn(IsOnlyIgnoreInsert = true, IsOnlyIgnoreUpdate = true)]//Tags字段禁止插入public int groupId { get; set; }}

删除数据

只能范围删除不能直接等于删除

var count = db.Deleteable<MyTable02>().Where(it => it.ts>time).ExecuteCommand();

源码和DEMO

找到TDengineTests文件夹

https://github.com/DotNetNext/SqlSugar

 

http://www.lryc.cn/news/151682.html

相关文章:

  • SQL Server对象类型(3)——视图(View)
  • 【LeetCode】剑指 Offer <二刷>(1)
  • MySQL事物和存储引擎
  • 代码随想录算法训练营Day51 | 309. 最佳买卖股票时机含冷冻期 | 714. 买卖股票的最佳时机含手续费 | 股票总结
  • C#,《小白学程序》第八课:列表(List)应用之二“编制高铁列车时刻表”
  • 2、QT的信号与槽
  • Java代码审计15之Apache log4j2漏洞
  • c语言每日一练(13)
  • H5 + C3基础(六)(2D转换transform 位移 旋转 缩放)
  • 2023最新 Electron.js 桌面应用开发教程(基础篇)更新中
  • 【ES】笔记-Set集合实践
  • 缺陷或负样本难以收集怎么办?使用生成式模型自动生成训练样本,image-to-image Stable diffusion
  • ZMTP协议
  • ubuntu18安装中文环境
  • 怎么提取视频中的音乐保存到本地?其实方法很简单
  • 线性代数的学习和整理18:矩阵的秩的各种定理, 秩和维度(未完成)
  • UVa11374 Airport Express(Dijkstra)
  • hadoop的hdfs中避免因节点掉线产生网络风暴
  • 2023年高教社杯 国赛数学建模思路 - 案例:最短时间生产计划安排
  • Spring MVC介绍
  • 5年测试在职经验之谈:2年功能测试、3年自动化测试,从入门到不可自拔...
  • 【Python数据分析】数据分析之numpy基础
  • Swift 如何从图片数据(Data)检测原图片类型?
  • 【ES6】 JavaScript 中的Object.assign
  • Redis缓存和持久化
  • OpenCV(六):多通道分离与合并
  • Sql单行数据查询为多行
  • 网络协议分析-http/https/tcp/udp
  • 基于aarch64分析kernel源码 四:printk 内核打印
  • 机器人中的数值优化(六)—— 线搜索最速下降法