.NET ORM 鑑別器 和 TDengine 使用 -SqlSugar

SqlSugar ORM

SqlSugar 是一款 老牌 .NET 開源多庫架構ORM框架 ,一套代碼能支持多種數據庫像Admin.net、Blog.Core、CoreShop等知名開源項目都採用了SqlSugar作爲底層

特色1:超級簡單

在不用任何設計模式,任何框架的情況下都可以擁有最佳體驗,SqlSugar做到了保姆一樣的服務,直接用不需要學習

的框架,各種默認值都是最佳配置,用到什麼看一下文檔便可。

特色2:產品必備

可以一套代碼支持所有主流數據庫(包括國產數據庫),成本要遠低於EF Core, EF Core基本每個數據庫都需要手動寫

兼容代碼 。 例如:建表、查詢函數、索引 、修改表等等。 SqlSugar只需要一套代碼就能支持多個數據庫。支持

多庫建表,多庫修改表,多庫索引,多庫事務,多庫查詢,跨庫查詢,多庫共存,多庫切換等等。

 

一、鑑別器(Discrimator)

類似tdengine裏面超級表概念, 他可以在一張表裏面存儲一個或者多個個性化字段,查詢自動變成條件,並且插入更新都會自賦值進行存儲

Discrimator ="Type:1"//字段名字可以隨便取
Discrimator ="Type:1,Name:a" //可以多個字段,不要有空格等

用例

[SugarTable("Animal",IsDisabledDelete =true)]//創建表禁止刪除列必須加
public class Animal
{
   [SugarColumn(IsIdentity =true,IsPrimaryKey =true)]
   public int AnimalId { get; set; }
   public string Name { get; set; }
}
[SugarTable("Animal",Discrimator ="Type:1", IsDisabledDelete = true)]//創建表禁止刪除列必須加
public class Dog : Animal
{
  [SugarColumn(IsNullable =true)]//可空
  public int DogId { get; set; }
  [SugarColumn(IsNullable = true)]//可空
  public string Breed { get; set; }
}
[SugarTable("Animal", Discrimator = "Type:2", IsDisabledDelete = true)]//創建表禁止刪除列必須加
public class Cat : Animal
{
  [SugarColumn(IsNullable = true)]//可空
  public int CatId { get; set; }
  [SugarColumn(IsNullable = true)]//可空
  public string Color { get; set; }
}

創建表

db.CodeFirst.InitTables<Animal,Dog, Cat>();//這個表包含所有字段,包括Type分類字段

查詢和插入

var cat = new Cat { Name = "Whiskers", Color = "Gray" };
db.Insertable(cat).ExecuteCommand();//實體類中沒有Type字段會自插入特性對應的Type=2


var catList=db.Queryable<Cat>().ToList();//自動加上條件Type=1
var dogList = db.Queryable<Dog>().ToList();//自動加上條件Type=2

更新操作

直接更新就行了Type會忽略更新

 

導航對應用

在導航應用也可以用使,他的優勢就是實體中不需要這個字段,而缺點就是需要創建多個類

var dis=db.Queryable<UnitTestDis<Cat>>()
.Includes(x => x.Animals).ToList();//T是Cat那麼就能導航Cat

var dis2 = db.Queryable<UnitTestDis<Dog>>()
.Includes(x => x.Animals).ToList();//T是Dog那麼就能導航Dog


[SugarTable("UnitTestDis")]//泛型需要設置表名
public class UnitTestDis<T>
{
  [SugarColumn(IsPrimaryKey =true,IsIdentity =true)]
  public int Id { get; set; }
  public int Aid { get; set; }
  [Navigate(NavigateType.OneToMany,nameof(Animal.AnimalId),nameof(Aid))]
  public List<T> Animals { get; set; }
}

 

 

二、TDengine 數據庫支持

TDengine——開源、高性能、雲原生的時序數據庫
TDengine 是一款開源、雲原生的時序數據庫,專爲物聯網、工業互聯網、金融、IT 運維監控等場景設計並優化。它能讓大量設備、數據採集器每天產生的高達 TB 甚至 PB 級的數據得到高效實時的處理,對業務的運行狀態進行實時的監測、預警,從大數據中挖掘出商業價值。 

 

TDengine 連接字符串

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

  

TDengine Nuegt安裝

NUGET SDK需要下載和安裝

https://docs.taosdata.com/connector/csharp/

下面是NUGET安裝

SqlSugar.TDengineCore
SqlSugarCore

  

TDengine DEMO 源碼

https://github.com/DotNetNext/SqlSugar

image.png

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章