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

来源:https://www.cnblogs.com/sunkaixuan/archive/2023/08/06/17609338.html
-Advertisement-
Play Games

SqlSugar ORM SqlSugar 是一款 老牌 .NET 開源多庫架構ORM框架 ,一套代碼能支持多種資料庫像Admin.net、Blog.Core、CoreShop等知名開源項目都採用了SqlSugar作為底層 特色1:超級簡單 在不用任何設計模式,任何框架的情況下都可以擁有最佳體驗,S ...


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

 

 SqlSugar下麵準備要支持 mongodb 資料庫,喜歡推薦一下,SqlSugar一直努力的創新和維護


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ## 8.1、場景模擬 ### 8.1.1、UserDao介面及實現類 ![image](https://img2023.cnblogs.com/blog/2052479/202308/2052479-20230806153633915-1785854235.png) ``` package org ...
  • ## Nacos 簡介 Nacos 是一個易於使用的動態服務發現、配置和服務管理平臺,用於構建雲原生的應用程式 Nacos 的關鍵特性包括以下幾項: - 服務發現和服務健康監測:服務提供者使用原生 SDK、OpenAPI 等註冊服務後,服務消費者可以使用 HTTP&API 查找和發現服務。Nacos ...
  • # AtCoder Beginner Contest 313 ## G - Redistribution of Piles ### 題意翻譯: 給定一個數列$a_i(a_i>0, i\in[1,n])$,和一個數$s$(初值為0),有兩種操作 - A - 全局非零數減一,減去的和加到$s$ - B ...
  • ###JDBC使用步驟總結 **1. 註冊驅動** ``` Class.forName("com.mysql.cj.jdbc.Driver"); ``` **2. 獲取鏈接** ``` Connection connection = DriverManager.getConnection(url,u ...
  • # 使用Python爬取公眾號的合集 # 前言 。。。最近老是更新關於博客的文章,很久沒更新其他的了,然後寫一下如何爬取微信公眾號裡面的圖片吧! 先看看微信公眾號的樣子吧: ![image](https://img2023.cnblogs.com/blog/3091176/202308/309117 ...
  • 一個 Go 文件包含以下幾個部分: - 包聲明 - 導入包 - 函數 - 語句和表達式 看下麵的代碼,更好地理解它: ## 例子 ```Go package main import "fmt" func main() { fmt.Println("Hello World!") } ``` ## 例子 ...
  • ### 歡迎訪問我的GitHub > 這裡分類和彙總了欣宸的全部原創(含配套源碼):[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) ### 本篇概覽 - 欣宸的月俸雖然很低,但還是咬著牙攢夠銀子 ...
  • ## 抽象靜態方法 在C# 11中,引入了對抽象靜態介面成員的支持。這個特性可以讓你在介面中定義靜態抽象方法、屬性、或事件。具體來說,一個介面可以定義一個或多個抽象靜態成員,這些成員沒有具體的實現。任何實現該介面的類或結構必須提供這些成員的靜態實現。這就像實現普通介面成員一樣,只不過是靜態的。當然, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...