1. 程式人生 > >C# 資料操作系列 - 13 SugarSql初探

C# 資料操作系列 - 13 SugarSql初探

# 0. 前言 前言,暫時揮別NHibernate(雖然我突然發現這玩意還挺有意思的,不過看得人不多)。大步進入了有很多小夥伴向我安利的SQLSugar,嗯,我一直叫SugarSQL,好像是這個吧? 這是一個由國內開發者開發的ORM框架,是一個輕量級框架(最新版的sqlSugarCore大概只有290kb)。下圖是sqlSugar的功能描述: ![功能說明](https://img2020.cnblogs.com/other/1266612/202005/1266612-20200522180736016-740573320.png) 從圖中我們能夠大概看出,SqlSugar的使用需要預先建立一個SqlSugarClient物件。SqlSugar在此基礎上添加了CRUD、實體資訊維護(對映關係)、配置(AOP/過濾器等)、模式(DbFirst、CodeFirst)還有一些工具類等。可以看到這是一個簡而全的框架。 同時,SqlSugar也為查詢進行了進一步的擴充套件,以下是它支援的功能,以及在查詢上的增強: ![查詢](https://img2020.cnblogs.com/other/1266612/202005/1266612-20200522180736313-2126485133.png) 好了,廢話不多說,先來試一下如何使用吧。 # 1. 安裝 本節環境是dotnet + vscode。因為我的Rider過期了,懶得折騰。系統又是Linux,所以選擇這種方式。至於Visual Studio和Rider的操作,十分簡單,而且之前《C#基礎系列16》裡有過介紹。 先建一個解決方案,名字為DataProvider: ```bash dotnet new sln --name DataProvider ``` 然後建立一個SqlSugarDemo的控制檯專案: ```bash dotnet new console --name SqlSugarDemo ``` 將這個專案新增到解決方案裡:(這一步為了方便後續管理) ```bash dotnet sln add SqlSugarDemo ``` 然後準備安裝 `sqlSugarCore` 。SqlSugar有兩個版本,這裡使用的是sqlSugarCore,這是針對.net core支援的版本。另一個是sqlSugar,是基於.netframework 4.X的。我們的系列是.net core的,所以就使用sqlSugarCore。 因為我們只是給專案`SqlSugarDemo`新增這個包,而不是給整個解決方案新增,所以我們需要預先切換目錄到SqlSugarDemo裡: ```bash cd SqlSugarDemo/ ``` 然後使用命令列安裝 sqlSugarCore: ```bash dotnet add package sqlSugarCore ``` 或者使用 NuGet: ```powershell Install-Package sqlSugarCore ``` 過一會就可以在控制檯中看到安裝成功的訊息: ```b log : Restore completed in XX sec for XXXXXX/SqlSugarDemo/SqlSugarDemo.csproj. ``` # 2. 基本使用示例 在上一節中,我們成功在專案中安裝了sqlSugarCore,那麼在這一節中將帶領小夥伴們一起探索SqlSugar。 先建立一個普通的模型: ```c# public class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } ``` 建立一個操作類,取名為 DefaultContext,根據給出的文件得知,SqlSugar每次操作資料的時候需要持有一個 SqlSugarClient物件。所以,這個類的定義應該如下: ```c# public class DefaultContext { public SqlSugarClient Client { get; } public DefaultContext(string connectionString, DbType dbType) { Client = new SqlSugarClient(new ConnectionConfig { ConnectionString = connectionString,//"Data Source=./demo.db", DbType = dbType, IsAutoCloseConnection = true, }); } } ``` - ConnectionString :連線字串 - DbType:資料庫型別,共有以下幾個值 - MySql - SqlServer - Sqlite - Oracle - PostgreSQL - IsAutoCloseConnection:是否自動關閉連線,推薦true,預設為false。預設情況下,需要手動釋放 然後測試插入: ```c# var context = new DefaultContext("Data Source=./demo.db", DbType.Sqlite); context.Client.In