SqlSugar-使用SqlSugar進行多數據庫操作

使用SqlSugar進行多數據庫操作主要涉及以下幾個步驟:

1. 配置數據庫連接

首先,你需要在項目的配置文件中(如appsettings.jsonweb.configapp.config)配置多個數據庫的連接字符串。每個連接字符串都對應一個不同的數據庫。

例如,在appsettings.json中,你可以這樣配置:

 

json復制代碼

{
"ConnectionStrings": {
"DefaultConnectionSqlServer": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;",
"DefaultConnectionMySql": "server=localhost;user=root;password=myPassword;database=myOtherDataBase;",
// 可以繼續添加更多數據庫的連接字符串
}
}

2. 創建SqlSugarClient實例

對于每個需要操作的數據庫,你都需要創建一個SqlSugarClient的實例,并在創建時傳入相應的數據庫連接配置。

 

csharp復制代碼

using SqlSugar;
// 創建SqlServer數據庫的SqlSugarClient實例
var dbClientSqlServer = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = Configuration.GetConnectionString("DefaultConnectionSqlServer"), // 從配置文件獲取連接字符串
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
// 其他配置...
});
// 創建MySql數據庫的SqlSugarClient實例
var dbClientMySql = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = Configuration.GetConnectionString("DefaultConnectionMySql"), // 從配置文件獲取連接字符串
DbType = DbType.MySql,
IsAutoCloseConnection = true,
// 其他配置...
});

3. 執行數據庫操作

現在,你可以使用這些SqlSugarClient實例來執行數據庫操作了。根據你的業務需求,選擇對應的實例來操作相應的數據庫。

 

csharp復制代碼

// 使用SqlServer數據庫實例插入數據
var user = new User { Name = "張三", Age = 20 };
var id = dbClientSqlServer.Insertable(user).ExecuteReturnIdentity();
// 使用MySql數據庫實例查詢數據
var userList = dbClientMySql.Queryable<User>().ToList();

4. 跨庫操作注意事項

  • 跨庫查詢:SqlSugar本身不直接支持跨數據庫的聯合查詢(JOIN)。如果你需要在不同的數據庫之間執行聯合查詢,你可能需要在應用層進行數據的合并,或者考慮使用數據庫級別的解決方案(如SQL Server的鏈接服務器)。
  • 事務處理:對于需要在多個數據庫上保持數據一致性的操作,你可能需要使用分布式事務。SqlSugar本身不直接提供分布式事務的支持,但你可以使用.NET的System.Transactions命名空間中的類來管理分布式事務。然而,請注意分布式事務的性能和復雜性。
  • 性能考慮:在執行多數據庫操作時,請考慮每個數據庫的性能和負載情況。避免在同一時間內對多個數據庫進行大量并發操作,這可能會導致性能問題。

5. 總結

使用SqlSugar進行多數據庫操作主要涉及配置多個數據庫連接、創建多個SqlSugarClient實例,并根據業務需求選擇相應的實例來執行數據庫操作。需要注意的是,跨庫查詢和分布式事務處理可能需要額外的考慮和配置。此外,還應注意每個數據庫的性能和負載情況,以確保系統的穩定性和性能。

附SqlSugar應用代碼:

using SqlSugar;


//創建數據庫對象 (用法和EF Dappper一樣通過new保證線程安全)
SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
{
? ? ConnectionString = "datasource=demo.db",
? ? DbType = DbType.Sqlite,
? ? IsAutoCloseConnection = true
},
db => {
?
? ? db.Aop.OnLogExecuting = (sql, pars) =>
? ? {

? ? ? ? //獲取原生SQL推薦 5.1.4.63 ?性能OK
? ? ? ? Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));

? ? ? ? //獲取無參數化SQL 對性能有影響,特別大的SQL參數多的,調試使用
? ? ? ? //Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer,sql,pars))


? ? };

? ? //注意多租戶 有幾個設置幾個
? ? //db.GetConnection(i).Aop

});

//建庫
Db.DbMaintenance.CreateDatabase();//達夢和Oracle不支持建庫

//建表(看文檔遷移)
Db.CodeFirst.InitTables<Student>(); //所有庫都支持 ? ??

//查詢表的所有
var list = Db.Queryable<Student>().ToList();

//插入
Db.Insertable(new Student() { SchoolId = 1, Name = "jack" }).ExecuteCommand();

//更新
Db.Updateable(new Student() { Id = 1, SchoolId = 2, Name = "jack2" }).ExecuteCommand();

//刪除
Db.Deleteable<Student>().Where(it => it.Id == 1).ExecuteCommand();


Console.WriteLine("恭喜你已經入門了,后面只需要用到什么查文檔就可以了。");
Console.ReadKey();
?

//實體與數據庫結構一樣
public class Student
{
? ? //數據是自增需要加上IsIdentity?
? ? //數據庫是主鍵需要加上IsPrimaryKey?
? ? //注意:要完全和數據庫一致2個屬性
? ? [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
? ? public int Id { get; set; }
? ? public int? SchoolId { get; set; }
? ? public string? Name { get; set; }
}

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

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

相關文章

攻防世界(PHP過濾器過濾)file_include

轉換過濾器官方文檔&#xff1a;https://www.php.net/manual/zh/filters.convert.php#filters.convert.iconv 這道題因為convert.base64-encode被過濾掉了&#xff0c;所以使用convert.iconv.*過濾器 在激活 iconv 的前提下可以使用 convert.iconv.* 壓縮過濾器&#xff0c; 等…

Win10安裝MongoDB(詳細版)

文章目錄 1、安裝MongoDB Server1.1. 下載1.2. 安裝 2、手動安裝MongoDB Compass(GUI可視工具)2.1. 下載2.2.安裝 3、測試連接3.1.MongoDB Compass 連接3.2.使用Navicat連接 1、安裝MongoDB Server 1.1. 下載 官網下載地址 https://www.mongodb.com/try/download/community …

【第28章】MyBatis-Plus之插件主體

文章目錄 前言一、MybatisPlusInterceptor 概覽1. 屬性2. InnerInterceptor 接口 二、使用示例1.Spring 配置2.Spring Boot 配置3 .mybatis-config.xml 配置 三、攔截忽略注解 InterceptorIgnore四、手動設置攔截器忽略執行策略五、本地緩存 SQL 解析總結 前言 MyBatis-Plus 提…

android 固定圖片大小

在Android中&#xff0c;固定圖片大小可以通過多種方法實現&#xff0c;這些方法主要涉及到ImageView控件的使用、Bitmap類的操作&#xff0c;以及第三方庫&#xff08;如Glide&#xff09;的輔助。以下是幾種常見的方法&#xff1a; 1. 使用ImageView控件 在Android的布局文…

利用docker容器安裝node,使用vue的開發環境

目錄 vue-app ├── docker-data │ ├── site │ ├── app ├── docker-compose.yaml └── deploy.sh docker-compose.yaml yaml文件執行 version: 3.8services:node:image: node:latestcontainer_name: vue-appports:- "8080:8080" # 宿主8080映射容器8…

系統服務綜合項目

要求&#xff1a; 現有主機 node01 和 node02&#xff0c;完成如下需求&#xff1a; 1、在 node01 主機上提供 DNS 和 WEB 服務 2、dns 服務提供本實驗所有主機名解析 3、web服務提供 www.rhce.com 虛擬主機 4、該虛擬主機的documentroot目錄在 /nfs/rhce 目錄 5、該目錄由 no…

如何保證語音芯片的穩定性能和延長使用壽命

要讓語音芯片保持穩定性能&#xff0c;首先需要深入理解其工作原理和內部構造。語音芯片&#xff0c;作為現代電子設備中的核心組件之一&#xff0c;承載著聲音信號的處理與輸出功能。為了確保其穩定運行&#xff0c;我們需要從多個方面進行細致的考慮和操作。? 1、避免長期高…

Windows系統MySQL的安裝,客戶端工具Navicat的安裝

下載mysql安裝包&#xff0c;可以去官網下載&#xff1a;www.mysql.com。點擊downloads 什么&#xff1f;后面還有福利&#xff1f; 下載MySQL 下載企業版&#xff1a; 下載Windows版 5點多的版本有點低&#xff0c;下載8.0.38版本的。Window系統。下載下面的企業版。不下載…

鄉鎮集裝箱生活污水處理設備處理效率高

鄉鎮集裝箱生活污水處理設備處理效率高 鄉鎮集裝箱生活污水處理設備優勢 結構緊湊&#xff1a;集裝箱式設計減少了占地面積&#xff0c;便于在土地資源緊張的鄉鎮地區部署。 安裝方便&#xff1a;設備出廠前已完成組裝和調試&#xff0c;現場只需進行簡單的連接和調試即可投入使…

[數字圖像處理]基礎知識整理(部分,持續更新)

程序中描述一副圖像&#xff0c;已知其橫向縱向的像素個數即可&#xff08;&#xff09; 灰度直方圖能反映一副圖像各個灰度級像素占圖像的面積比&#xff08;√&#xff09; 從程序編寫的角度看&#xff0c;描述一副圖像的基本屬性通常包括其分辨率&#xff0c;即圖像的寬度…

Docker鏡像和容器的管理

1 Docker鏡像管理操作 開啟鏡像加速 根據關鍵字查詢鏡像 下載查看鏡像 詳細鏡像信息 查看latest版本 上傳鏡像到阿里云倉庫 2 Docker容器操作 關于容器根據第一個pid進程是否能正常在前臺運行

19. 地址轉換

地址轉換 題目描述 Excel 是最常用的辦公軟件。每個單元格都有唯一的地址表示。比如&#xff1a;第 12 行第 4 列表示為&#xff1a;"D12"&#xff0c;第 5 行第 255 列表示為"IU5"。 事實上&#xff0c;Excel 提供了兩種地址表示方法&#xff0c;還有一…

算法訓練營第30天|122.買賣股票的最佳時機II|55. 跳躍游戲|45.跳躍游戲II|1005.K次取反后最大化的數組和

122.買賣股票的最佳時機II 思路&#xff1a;只有前一天與后一天的利潤為正時&#xff0c;才將其加入總利潤。 55. 跳躍游戲 思路&#xff1a;找最大覆蓋范圍 出錯點&#xff1a;數組的遍歷&#xff0c;遍歷范圍應該是覆蓋范圍內 45.跳躍游戲II 思路&#xff1a; 局部最優&am…

批量爬取B站網絡視頻信息

使用XPath爬取B站視頻鏈接等相關信息 分析B站html框架獲取內容完整代碼 對于B站&#xff0c;目前網上的爬蟲大多都是使用通過解析服務器的響應來爬取想要的內容&#xff0c;下面我們通過使用XPath來爬取B站上一些想要的信息 此次任務我們需要對B站搜索到的關鍵字&#xff0c;并…

數據結構 —— FloydWarshall算法

數據結構 —— FloydWarshall算法 FloydWarshall算法三種最短路徑算法比較1. Dijkstra算法2. Bellman-Ford算法3. Floyd-Warshall算法總結 我們之前介紹的兩種最短路徑算法都是單源最短路徑&#xff0c;就是我們要指定一個起點來尋找最短路徑&#xff0c;而我們今天介紹的Floyd…

ctfshow-web入門-文件上傳(web166、web167)(web168-web170)免殺繞過

目錄 1、web166 2、web167 3、web168 4、web169 5、web170 1、web166 查看源碼&#xff0c;前端只讓傳 zip 上傳 zip 成功后可以進行下載 隨便搞一個壓縮包&#xff0c;使用記事本編輯&#xff0c;在其內容里插入一句話木馬&#xff1a; 上傳該壓縮包&#xff0c;上傳成功…

附下載 | 100項能源領域網絡與數據安全政策全集(2024版)

能源是工業的糧食&#xff0c;能源安全事關國家根本安全。當今國際局勢風云變幻&#xff0c;全球地緣政治、經濟、科技體系正經歷深刻變化&#xff0c;能源局勢將更加錯綜復雜&#xff0c;威脅能源安全的各種“灰犀牛”“黑天鵝”事件時有發生&#xff0c;促使國際能源版圖深刻…

system V共享內存【Linux】

文章目錄 原理shmgetftokshmat(share memory attach)shmdt&#xff0c;去關聯&#xff08;share memory delete attach&#xff09;shmctl ,刪除共享內存共享內存與管道 原理 共享內存本質讓不同進程看到同一份資源。 申請共享內存&#xff1a; 1、操作系統在物理內存當中申請…

詳解Redis:什么是Redis?

什么是Redis? Redis&#xff08;Remote Dictionary Server&#xff09;是一種開源的、高性能的、基于內存快速讀寫的的數據結構存儲系統&#xff0c;常用于緩存&#xff0c;分布式鎖等場景&#xff1b; Redis常用數據類型有哪些&#xff1f; String(字符串) 適用場景…

Qt中實現讓靜態圖片動起來,創建動畫效果

在現代應用程序開發中&#xff0c;動畫效果是提升用戶體驗的重要元素之一。Qt作為一個強大的跨平臺應用程序框架&#xff0c;提供了豐富的工具和庫來創建各種動畫效果。本文將介紹如何在Qt中使用靜態圖片創建動畫效果。 實現方法一 使用QTimer和QPixmap 1.準備圖片資源&#…