SqlSugar分表筆記

1、使用SqlSugar的分表功能時,.net要使用.net core;
? ? ? 我開始使用的是.net freamwork4.72,程序報異常,沒能解決,換到.net core下面就正常;

2、SqlSugar自帶分表支持按季度、月、周、日進行分表;

3、定義實體類對象時,主鍵不能是自增列、不能是int;主鍵支持long或guid:

[SplitTable(SplitType.Day)]//按天分表[SugarTable("t溫度監測表_{year}_{month}_{day}")]//3個變量必須要有,這么設計為了兼容開始按年,后面改成按月、按日public class TemperatureMonitor{[SugarColumn(IsPrimaryKey = true)]public long Id { get; set; }[SugarColumn(ColumnName = "監測點", ColumnDataType = "nvarchar", Length = 500)]public string Name { get; set; }[SplitField]//分表字段 ,在插入的時候會根據這個字段插入哪個表,在更新刪除時用這個字段找出相關表[SugarColumn(ColumnName = "記錄時間")]public DateTime CreateTime { get; set; }[SugarColumn(ColumnName = "外部溫度")]public double OutSiderTemperature { get; set; }[SugarColumn(ColumnName = "內部溫度")]public double InnerTemperature { get; set; }public override string ToString(){return $"{CreateTime.ToString("yyyy-MM-dd HH:mm:ss")}\t{Name}\t外部溫度={OutSiderTemperature}\t內部溫度={InnerTemperature}";}}

4、通過代碼創建數據表

// 使用時
var db = new SqlSugarScope(new ConnectionConfig()
{ConnectionString = "connection_string",DbType = DbType.SqlServer,IsAutoCloseConnection = true,InitKeyType = InitKeyType.Attribute  // 從實體特性中讀取主鍵自增列信息
});
SqlSugar.SqlSugarScope db = BllDB.GetDB(); //根據TemperatureMonitor類定義,創建對應的數據表
db.CodeFirst.SetStringDefaultLength(200) //設置字符串類型的默認長度是200.SplitTables() //標識分表.InitTables<TemperatureMonitor>(); //如果數據庫里沒有這張表,就會自動新建一張

5、寫數據到分表中

public static bool WriteData(List<TemperatureMonitor> monitors, out string error){error = null;try{var db = BllDB.GetDB();                long y = db.Insertable(monitors).SplitTable() .ExecuteReturnSnowflakeId();//寫入數據并返回雪花ID,并自動賦值ID列return true;}catch (Exception ex){error = ex.Message;}return false;}

6、查詢數據

//根據分表字段,確定對應的數據在哪張數據表上
TemperatureMonitor temp = new TemperatureMonitor() { CreateTime = DateTime.Parse("2014-12-03 15:35:35.983") };
var tb= db.SplitHelper(temp).GetTableNames(); //根據temp對象的分表字段信息,查詢對應的數據在哪張分表上
  //查詢符合條件(對象的Name==name)的所有數據 monitors = db.Queryable<TemperatureMonitor>().Where(it => it.Name == name)//用Name屬性進行過濾.SplitTable(tab => tab) //查詢所有分表.ToList();
//只查詢最近的一張表
var db = BllDB.GetDB();
monitors = db.Queryable<TemperatureMonitor>().SplitTable(tab => tab.Take(1)) //最近一張表.Where(it => it.Name.Equals(name)).ToList();

//查詢特定時間段內,Name==name的數據 
var db = BllDB.GetDB();
monitors = db.Queryable<TemperatureMonitor>().SplitTable(begintime,endtime) //通過時間查詢(會自動生產CreateTime的過濾并找到對應時間的表).Where(it => it.Name.Equals(name)).ToList();

8、編輯數據


//修改Id=1808349695190372352的數據的數據值
db.Updateable<TemperatureMonitor>().SetColumns(it => new TemperatureMonitor(){OutSiderTemperature = 222,InnerTemperature = 11}).Where(it => it.Id == 1808349695190372352).SplitTable(tab => tab).ExecuteCommand();

9、刪除數據


//刪除根據Id刪除數據
id = 1808404206764298259;
int cnt = db.Deleteable<TemperatureMonitor>().In(id).SplitTable(tab => tab).ExecuteCommand();
//直接根據實體集合刪除 (全自動 找表插入)db.Deleteable(deleteList).SplitTable()    //SplitTable不能少.ExecuteCommand();

10、補充——insert時關于PK的處理

 //雪花IDdb.Insertable(data).SplitTable().ExecuteReturnSnowflakeIdList();//插入并返回雪花ID并且自動賦值ID   //服務器時間修改、不同端口用同一個代碼、多個程序插入一個表都需要用到WorkId//保證WorkId唯一 ,程序啟動時配置 SnowFlakeSingle.WorkId=從配置文件讀取;//GUIDdb.Insertable(data).SplitTable().ExecuteCommand();//插入GUID 自動賦值 ID//大數據寫入db.Fastest<OrderSpliteTest>().SplitTable().BulkCopy(List<OrderSpliteTest>);//大數據寫入方式如果用到雪花ID需要手動賦值:SnowFlakeSingle.Instance.NextId()//部分數據庫需配置 具體用法看文檔: https://www.donet5.com/Home/Doc?typeId=2404// sql 如下
//INSERT INTO [SplitTestTable_20190101] --如果表不存在會自動建表
//           ([Id],[Name],[CreateTime])
//     VALUES
//           (@Id,@Name,@CreateTime)

更多信息請參考官網:.NET ORM 分表組件,自動分表 - SqlSugar 5x - .NET果糖網

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40623.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ArcGIS Pro SDK (七)編輯 15 版本控制選項

ArcGIS Pro SDK &#xff08;七&#xff09;編輯 15 版本控制選項 文章目錄 ArcGIS Pro SDK &#xff08;七&#xff09;編輯 15 版本控制選項獲取和設置版本控制選項 環境&#xff1a;Visual Studio 2022 .NET6 ArcGIS Pro SDK 3.0 獲取和設置版本控制選項 var vOptions A…

PostgreSQL 技術內幕(十七):FDW 實現原理與源碼解析

對于一定規模的系統而言&#xff0c;數據倉庫往往需要訪問外部數據來完成分析和計算。外部數據包裝器&#xff08;Foreign Data Wrapper&#xff0c; 簡稱 FDW&#xff09;是 PostgreSQL 提供的訪問外部數據源機制。用戶可以使用簡單的 SQL 語句訪問和操作外部數據源&#xff0…

Python面試題:Python 中的生成器(generator)是什么?有什么優點?

在Python中&#xff0c;生成器&#xff08;generator&#xff09;是一種特殊的迭代器&#xff0c;使用yield關鍵字生成值&#xff0c;可以逐個生成序列中的值&#xff0c;而不需要一次性將所有值加載到內存中。生成器函數在定義時使用def關鍵字&#xff0c;并包含一個或多個yie…

[word] Word如何快速生成一段文本 #知識分享#學習方法

Word如何快速生成一段文本 Word如何快速生成一段文本&#xff1f;有時候我們會用一大段文字來做一些功能測試&#xff0c;不少朋友的做法就是臉滾鍵盤&#xff0c;一頓亂按&#xff0c;這樣看起來文筆不通&#xff0c;看著也會比較難受&#xff0c;測試功能的效果也不怎么理想…

uniapp中實現跳轉鏈接到游覽器(安卓-h5)

uniapp中實現跳轉鏈接到游覽器&#xff08;安卓-h5&#xff09; 項目中需要做到跳轉到外部鏈接&#xff0c;網上找了很多都不是很符合自己的要求&#xff0c;需要編譯成app后是跳轉到游覽器打開鏈接&#xff0c;編譯成web是在新窗口打開鏈接。實現的代碼如下&#xff1a; 效果&…

java基于ssm+vue 旅游信息資源平臺

1前臺首頁功能模塊 旅游資源網站 &#xff0c;在系統首頁可以查看首頁、景點信息、酒店信息、客房信息、交流論壇、紅色文化、個人中心、后臺管理、客服等內容&#xff0c;如圖1所示。 圖1系統功能界面圖 用戶登錄、用戶注冊&#xff0c;在注冊頁面可以填寫用戶名、密碼、姓名…

Redis GEO 功能解析

Redis GEO 功能解析 引言 Redis GEO 是 Redis 數據庫提供的一個特殊功能,用于存儲地理位置信息,并支持基于地理位置的查詢。這一功能對于需要處理地理位置數據的現代應用程序來說非常寶貴,如外賣配送、社交媒體、地圖服務等。本文將詳細介紹 Redis GEO 的功能、使用方法,…

DFS之剪枝與優化——AcWing 165. 小貓爬山

DFS之剪枝與優化 定義 DFS之剪枝與優化指的是在執行深度優先搜索(DFS, Depth-First Search)時&#xff0c;采取的一系列策略來減少搜索空間&#xff0c;避免無效計算&#xff0c;從而加速找到問題的解。剪枝是指在搜索過程中&#xff0c;當遇到某些條件不符合解的要求或者可以…

產科管理信息系統源碼:產科電子病歷、高危孕產婦五色管理系統源碼 孕產婦健康管理信息平臺源碼

產科管理信息系統源碼&#xff1a;產科電子病歷、高危孕產婦五色管理系統源碼 孕產婦健康管理信息平臺源碼 產科電子病歷系統是以采集病人在整個醫療護理過程中所產生的各種信息。包括病案首頁、門診病歷、住院病歷、出院記錄、病人病程記錄等全部病歷文書&#xff1b;涵蓋文字…

宿舍報修小程序的設計

管理員賬戶功能包括&#xff1a;系統首頁&#xff0c;個人中心&#xff0c;管理員管理&#xff0c;基礎數據管理&#xff0c;論壇管理&#xff0c;故障上報管理&#xff0c;新聞信息管理&#xff0c;維修人員管理 微信端賬號功能包括&#xff1a;系統首頁&#xff0c;新聞信息…

node.js外賣小程序-計算機畢業設計源碼81838

摘要 自從計算機發展開始&#xff0c;計算機軟硬件相關技術的發展速度越來越快&#xff0c;在信息化高速發展的今天&#xff0c;計算機應用技術似乎已經應用到了各個領域。在餐飲行業&#xff0c;除了外賣以外就是到店里就餐&#xff0c;在店里就餐如果需要等待點餐的話&…

轉盤輸入法-單獨鼠標版本

序 轉盤輸入法&#xff0c;給你的聊天加點新意。它不用常見的九宮格或全鍵盤&#xff0c;而是把字母擺在圓盤上&#xff0c;一滑一滑&#xff0c;字就出來了&#xff0c;新鮮又直接。 單獨鼠標版本GIF演示 演示軟件下載 轉盤輸入法https://download.csdn.net/download/u0146…

zdppy+vue3+antd 實現表格數據渲染

基本用法 <template><a-table :columns"columns" :data-source"data"><template #headerCell"{ column }"><template v-if"column.key name"><span>xxx Name</span></template></temp…

免費鼠標連點器有嗎?需要付費嗎?鼠標連點器電腦版免費推薦6款!

在數字化時代&#xff0c;鼠標連點器成為了許多用戶提高工作效率、優化游戲體驗的得力助手。然而&#xff0c;面對市場上琳瑯滿目的鼠標連點器軟件&#xff0c;很多用戶都會產生疑問&#xff1a;是否有免費的鼠標連點器&#xff1f;它們真的需要付費嗎&#xff1f;今天&#xf…

名企面試必問30題(二十二)——你對加班的看法?

1.思路 實際上&#xff0c;很多公司詢問此問題&#xff0c;并非表明一定要加班&#xff0c;只是想測試您是否愿意為公司奉獻。在回答時&#xff0c;一定不能有諸如不接受加班、不接受 996 等話語&#xff0c;因為沒有公司能承諾永遠不加班。主要回答應圍繞因何原因加班&#xf…

lua入門(1) - 基本語法

本文參考自&#xff1a; Lua 基本語法 | 菜鳥教程 (runoob.com) 需要更加詳細了解的還請參看lua 上方鏈接 交互式編程 Lua 提供了交互式編程模式。我們可以在命令行中輸入程序并立即查看效果。 Lua 交互式編程模式可以通過命令 lua -i 或 lua 來啟用&#xff1a; 如下圖: 按…

物理刪除和邏輯刪除區別

物理刪除和邏輯刪除是數據庫管理中針對記錄刪除操作的兩種不同方式&#xff0c;它們的主要區別在于數據的實際處理和后續影響&#xff1a; 物理刪除&#xff1a; 操作實質&#xff1a;物理刪除會將數據記錄從數據庫表中徹底移除&#xff0c;包括記錄所占的磁盤空間都會被釋放。…

Vue3 對跳轉 同一路由傳入不同參數的頁面分別進行緩存

1&#xff1a;使用場景 從列表頁跳轉至不同的詳情頁面&#xff0c;對這些詳情頁面分別進行緩存 2&#xff1a;核心代碼 2.1: 配置路由文件 在路由文件里對需要進行緩存的路由對象添加meta 屬性 // 需要緩存的詳情頁面路由 { name: detail, path: /myRouter/detail…

十大排序:插入/希爾/選擇/堆/冒泡/快速/歸并/計數/基數/桶排序 匯總(C語言)

目錄 前言非線性時間比較類插入排序(1) 直接插入排序(2) 希爾排序 選擇排序(3) 選擇排序優化版(4) 堆排序 交換排序(5) 冒泡排序(6) 快速排序hoare版本挖坑版前后指針版非遞歸版 歸并排序(7) 歸并排序遞歸版非遞歸版 線性時間比較類(8) 計數排序基數排序與桶排序 總結 前言 在計…

報文交換 和 電路交換對比說明

報文交換 和 電路交換 是兩種不同的網絡通信方式&#xff0c;它們在數據傳輸的方式、效率、成本和適用場景等方面有所不同。下面詳細對比這兩種交換方式&#xff0c;并舉例說明。 報文交換&#xff08;Message Switching&#xff09; 定義&#xff1a;報文交換是一種存儲-轉發…