Sqlsugar補充自定義模板

DBFirst

默認創建所有實體

CreateClassFile()的第二個參數為生成實體類命名空間

//.net6以下
db.DbFirst.IsCreateAttribute().CreateClassFile("c:\\Demo\\1", "Models");
//.net6以上 string加?
db.DbFirst.IsCreateAttribute().StringNullable().CreateClassFile("c:\\Demo\\1", "Models");//參數1:路徑  參數2:命名空間
//IsCreateAttribute 代表生成SqlSugar特性

生成所有實體且文件名小寫(userentity.cs),用(UserEntity.cs多好)應該沒人會用吧

db.DbFirst.FormatFileName(x => x.ToLower()).CreateClassFile("c\\yourPath");

如果數據庫字段可空,生成實體加上"?",string?,int?,DateTime?

db.DbFirst.StringNullable().CreateClassFile("c\\");//強制可以空類型string加上?

按需創建實體

第二句,把表名先轉成小寫,再查看是否匹配,表里Snow->snow == "snow",生成的實體類還是以表名一樣Snow{}

db.DbFirst.Where("Student").CreateClassFile("c:\\Demo\\2", "Models");
db.DbFirst.Where(it => it.ToLower().StartsWith("snow")).CreateClassFile("c:\\Demo\\3", "Models");
db.DbFirst.Where(it => it.ToLower().StartsWith("view")).CreateClassFile("c:\\Demo\\4", "Models");

數據庫設置字段默認值就加上,例如public bool isDeleted {get;set;} = 0

自定義模版格式化

注意SettingPropertyTemplate可能和IsCreateAttribute存在沖突一般不要一起使用,因為這倆都是向實體類屬性上添加特性的。

db.DbFirst.SettingClassTemplate(old => { return old;/*修改old值替換*/ })//類構造函數 .SettingConstructorTemplate(old =>{return old;/*修改old值替換*/ }).SettingNamespaceTemplate(old => {return old + "\r\nusing SqlSugar;"; //實體類追加引用SqlSugar,}).SettingPropertyDescriptionTemplate(old =>{ return old;/*修改old值替換*/}) //屬性備注//屬性:新重載 完全自定義用配置.SettingPropertyTemplate((columns,temp,type) => {var columnattribute = "\r\n           [SugarColumn({0})]";List<string> attributes = new List<string>();if (columns.IsPrimarykey)attributes.Add("IsPrimaryKey=true");if (columns.IsIdentity)attributes.Add("IsIdentity=true");if (attributes.Count == 0) {columnattribute = "";}return temp.Replace("{PropertyType}", type).Replace("{PropertyName}", columns.DbColumnName).Replace("{SugarColumn}",string.Format(columnattribute,string.Join(",", attributes)));}).CreateClassFile("c:\\Demo\\7");
//[SettingClassTemplate]-------------自定義類模板(添加基類和接口)
db.DbFirst.SettingClassTemplate(old => {// 在默認類定義前添加繼承和接口// 原模板格式類似: public class {ClassName} {{ ... }}return old.Replace("public class", "public class {ClassName} : BaseEntity, IEntity");})//[SettingConstructorTemplate]------------自定義構造函數模版
db.SettingConstructorTemplate(old => 
{// 提取類名(先去掉括號,再分割)string className = old.Split('(')[0].Split(' ')[1];// 生成構造函數return $@"public {className}() {{ }} // 無參構造函數public {className}(string name) {{//有參this.Name = name;}}";
})//[SettingNamespaceTemplate]--------------自定義命名空間模版
db.DbFirst.SettingNamespaceTemplate(old => {// 修改命名空間并添加所需引用return "namespace MyProject.Entities;\r\n" +"using System;\r\n" +"using SqlSugar;\r\n" +"using Newtonsoft.Json;";})//[SettingPropertyDescriptionTemplate]-------自定義注釋
db.DbFirst.SettingPropertyDescriptionTemplate(old => {// 為屬性添加XML注釋return $@"/// <summary>/// {old} - 最后更新時間/// </summary>";}).CreateClassFile("C:\\EntityModels");//[SettingPropertyTemplat]
//SettingPropertyTemplate可能和IsCreateAttribute存在沖突一般不要一起使用,因為這倆都是向實體類屬性上添加特性的
db.DbFirst.SettingPropertyTemplate((columns, temp, type) => {// 構建SugarColumn特性var columnAttr = "\r\n        [SugarColumn({0})]";var attributes = new List<string>();// 添加主鍵標識if (columns.IsPrimarykey)attributes.Add("IsPrimaryKey = true");// 添加自增標識if (columns.IsIdentity)attributes.Add("IsIdentity = true");//假如你數據庫列為user_name,SqlSugar生成的實體為UserName,這個時候就要進行列名映射// 添加列名映射(如果實體屬性名與數據庫列名不同)if (columns.DbColumnName != columns.PropertyName)attributes.Add($"ColumnName = \"{columns.DbColumnName}\"");// 添加忽略屬性(如果需要)實體類Password屬性上的就會添加特性[SugarColumn(IsIgnore = true)]if (columns.DbColumnName.ToLower() == "password")attributes.Add("IsIgnore = true");// 如果沒有屬性,清空特性if (attributes.Count == 0)columnAttr = "";// 處理可空類型/*columns.IsNullable:數據庫字段設置為允許為NULLtype != "string":排除字符串類型(C# 中string本身就是可空的)!type.Contains("?"):確保類型還沒有被處理為可空類型(避免重復添加?)*/var propertyType = type;if (columns.IsNullable && type != "string" && !type.Contains("?"))propertyType += "?";// 替換模板變量//這里做的是把上面的執行轉換完成后生成實體屬性/*按照格式生成 [SugarColumn(....)]public PropertyType PropertyName {get;set;},例如:[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]public int Id { get; set; }*/return temp.Replace("{PropertyType}", propertyType).Replace("{PropertyName}", columns.PropertyName).Replace("{SugarColumn}", string.Format(columnAttr, string.Join(",", attributes)));})

CodeFirst

特性介紹【SugarColumn】【SugarTable("表名")】

創建索引特性

插入

幾種插入方法

100w條數據插入只要3.8s

擴展一下,java采用LOAD DATA插入 100 萬條數據還約 8.9 秒,可以說C#性能nb

修改

??

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

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

相關文章

LeetCode 392.判斷子序列

給定字符串 s 和 t &#xff0c;判斷 s 是否為 t 的子序列。 字符串的一個子序列是原始字符串刪除一些&#xff08;也可以不刪除&#xff09;字符而不改變剩余字符相對位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的一個子序列&#x…

邏輯回歸:從原理到實戰的完整指南

在機器學習中&#xff0c;分類任務是最常見的應用場景之一。而邏輯回歸&#xff08;Logistic Regression&#xff09;&#xff0c;盡管名字中有“回歸”&#xff0c;實際上是一種非常強大且廣泛應用的二分類模型。它簡單、高效、可解釋性強&#xff0c;是數據科學初學者入門分類…

鴻蒙搭配前端開發:應用端與WEB端交互

鴻蒙系統&#xff08;HarmonyOS&#xff09;是華為開發的一款面向全場景的分布式操作系統&#xff0c;其設計初衷是為了適應物聯網時代的需求&#xff0c;旨在構建一個統一的操作系統&#xff0c;支持多種設備的無縫協同工作。其分布式開發的一些主要優勢&#xff1a; 跨設備協…

配置sscms時被sql server處處刁難

今天要記下來的是一個小例子。接前面&#xff0c;當我終于完成sql server的安裝時&#xff0c;才發現要填寫sscms的兩個空是有多么艱難。首先安裝sql server2016出現了太多環境不兼容的問題&#xff0c;讓我只好退而安裝sql server2012。安裝sql server2012時其實是可以避坑的&…

【Flink】DataStream API:源算子、數據類型

目錄源算子&#xff08;Source&#xff09;從集合中讀取數據從文件讀取數據從Socket讀取數據從Kafka讀取數據從數據生成器讀取數據Flink支持的數據類型Flink的類型系統Flink支持的數據類型類型提示&#xff08;Type Hints&#xff09;源算子&#xff08;Source&#xff09; Fli…

Linux 安裝docker-compose安裝方法(安裝docker compose安裝)

文章目錄**方法一&#xff1a;通過 curl 下載二進制文件&#xff08;推薦&#xff09;**1. 安裝前準備- **確保已安裝 Docker**- **檢查 Docker 是否安裝成功**2. 下載并安裝 Docker Compose- **下載最新版本的 Docker Compose 二進制文件**- **國內加速下載&#xff08;解決 G…

OCR 發票識別與驗真接口:助力電子化發票新時代

自 2025 年 10 月 1 日起&#xff0c;紙質火車票徹底告別歷史舞臺&#xff0c;全面數字化的電子發票取而代之&#xff0c;這一變革標志著票務領域的重大革新&#xff0c;也讓電子化發票處理的需求呈井噴式增長。在此背景下&#xff0c;OCR 發票識別和發票驗真接口技術挺身而出&…

設計模式:抽象工廠模式(Abstract Factory Pattern)

文章目錄一、概念二、實例分析三、完整示例一、概念 抽象工廠模式是一種創建型設計模式。 提供一個接口用于創建一系列相關或相互依賴的對象&#xff0c;而無需指定它們的具體類。 相比于工廠方法模式&#xff0c;抽象工廠模式不僅僅是創建單一產品&#xff0c;而是一族產品&am…

輕量級注意力模型HOTSPOT-YOLO:無人機光伏熱異常檢測新SOTA,mAP高達90.8%

【導讀】 無人機光伏巡檢如何更智能、更高效&#xff1f;HOTSPOT-YOLO模型給出了亮眼答案&#xff01;給AI裝上“熱成像鷹眼”&#xff0c;能精準鎖定光伏板上的細微熱斑缺陷。它不僅將檢測精度&#xff08;mAP&#xff09;提升至90.8%&#xff0c;更在保持實時性的前提下大幅…

CHT共軛傳熱: 導熱系數差異如何影響矩陣系數

文章目錄 一、導熱系數差異如何影響矩陣系數&#xff1f;二、如何處理系數差異以加速收斂&#xff1f;1. **變量重縮放&#xff08;Scaling of Variables&#xff09;**2. **使用物理型預條件子&#xff08;Physics-based Preconditioning&#xff09;**3. **區域分解法&#x…

Vue Vapor 事件機制深潛:從設計動機到源碼解析

基于 vue3.6&#xff08;alpha 階段&#xff09;及 Vapor 的最新進展撰寫&#xff1b;Vapor 仍在演進中&#xff0c;部分實現可能繼續優化。TL;DR&#xff08;速覽&#xff09; 傳統&#xff08;≤3.5&#xff09;&#xff1a;事件以元素為中心綁定&#xff1b;每個元素用 el._…

Day 01(01): Hadoop與大數據基石

目標&#xff1a;建立對大數據生態的整體認知&#xff0c;理解HDFS和MapReduce的核心思想。 8:00-9:30&#xff1a;【視頻學習】在B站搜索“Hadoop入門”或“三小時入門大數據”&#xff0c;觀看1-2個高播放量的簡介視頻&#xff0c;了解大數據面臨的問題和Hadoop的解決方案。 …

開源 + 免費!谷歌推出 Gemini CLI,Claude Code 的強勁對手

在如今飛速發展的 AI 工具生態中&#xff0c;命令行界面&#xff08;CLI&#xff09;這一開發者與計算機交互的傳統方式&#xff0c;正悄然發生著一場顛覆性的變革。2025 年 6 月 25 日&#xff0c;谷歌正式發布開源的 Gemini CLI&#xff0c;這一舉措標志著谷歌 Gemini AI 能力…

MacOS - 記錄MacOS發燙的好幾天 - 幕后黑手竟然是

MacOS - 記錄MacOS發燙的好幾天 - 幕后黑手竟然是 Mac是不可能出bug的&#xff0c;一定是世界出bug了。 前言 幾天前Mac突然開始燙燙的&#xff0c;就這么一燙燙了好幾天。這可不行&#xff0c;所以看了下“活動監視器”&#xff0c;發現了一個Code Helper(Plugin)占據200%上下…

Vue基礎知識-Vue中:class與:style動態綁定樣式

完整源碼<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><script src&quo…

終于趕在考試券過期前把Oracle OCP證書考下來了!

&#x1f6a9; 今天終于能松口氣了——Oracle OCP證書到手&#xff01; 差點白白浪費一次考試機會&#xff08;1700&#xff09;&#xff01;3月底報名了Oracle OCP&#xff0c;擺爛了大半年&#xff0c;終于是逼著自己在考試券過期前考完了082和083科目&#xff0c;目前已經順…

Power BI學習筆記-周報銷售數據分析

Power BI學習筆記-周報銷售數據分析 簡介 來自B站的Power BI學習視頻的學習筆記。 記錄來自B站的Power BI教學視頻&#xff0c;由“高級財務BP-Ni”發布&#xff0c;視頻發布者主要發布財務類相關的PBI視頻&#xff0c;視頻長度30分鐘左右。 視頻鏈接&#xff1a; 【powerbi周報…

Oracle 數據庫與操作系統兼容性指南

前言 作為一個在 Oracle 坑里摸爬滾打多年的老 DBA&#xff0c;最怕聽到的就是"這個版本能不能裝在這個系統上&#xff1f;"這種問題。昨天又有朋友來問我 Oracle 數據庫和操作系統的兼容性&#xff0c;索性把這些年積累的官方兼容性列表整理出來&#xff0c;省得大家…

pytorch初級

本文章是本人通過讀《Pytorch實用教程》第二版做的學習筆記&#xff0c;深度學習的核心部分&#xff1a;數據準備 ?? 模型構建 ?? 模型訓練 ?? 模型評估與應用。根據上面的思路&#xff0c;我們分為幾個部分&#xff1a; 第一部分&#xff1a;PyTorch 基礎 - 涵蓋了從基本…

UniApp 混合開發:Plus API 從基礎到7大核心場景實戰的完整指南

在 UniApp 混合開發中&#xff0c;plus API 是連接前端代碼與原生設備能力的核心橋梁。基于 5 Runtime&#xff0c;它封裝了設備硬件、系統交互、網絡通信等近百種原生能力&#xff0c;解決了 UniApp 跨端 API 覆蓋不足的問題。但直接使用 plus API 常面臨兼容性復雜、回調嵌套…