成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

學習SqlSugar ORM框架的關鍵:對其模塊與實現原理的詳細分析

開發 前端
Core 模塊是 SqlSugar 的核心模塊,主要實現了 ORM 映射的核心功能。其中包括了一個代碼生成器,可以根據相關配置信息自動生成對應的實體類和數據訪問層代碼。

SqlSugar 是一款基于 ADO.NET 的輕量級 ORM 框架,它的核心模塊包括 Core、Ado、Queryable、SqlBuilder 和 Attributes 等,下面就逐一進行深度解析。

Core 模塊

Core 模塊是 SqlSugar 的核心模塊,主要實現了 ORM 映射的核心功能。其中包括了一個代碼生成器,可以根據相關配置信息自動生成對應的實體類和數據訪問層代碼。

在 Core 模塊中,SqlSugar 使用反射機制獲取實體類屬性信息,在運行時動態生成 SQL 語句。同時,SqlSugar 中定義了一系列的委托類型,通過委托實現對 SQL 語句、參數值和實體數據的封裝和處理,大大簡化了數據訪問層的編寫工作。此外,SqlSugar 中還引入了緩存機制,大大提高了數據訪問效率。

Ado 模塊

Ado 模塊是 SqlSugar 中最底層的模塊,用于對數據庫進行操作。主要包括了與數據庫連接相關的類和方法,例如 ConnectionConfig、SqlConnection、SqlCommand、SqlDataAdapter 等,通過這些類和方法,SqlSugar 可以實現與多種類型的數據庫連接。

在 Ado 模塊中,SqlSugar 將數據庫連接分為兩個部分:連接池和操作命令。在連接池中,SqlSugar 提供了一系列的方法,包括創建連接、獲取連接、釋放連接和關閉連接等。在操作命令中,SqlSugar 使用 SqlCommand 類對 SQL 語句進行執行,并借助 SqlParameters 類封裝參數值。

Queryable 模塊

Queryable 模塊用于實現查詢功能,它是 ORM 中最常用的模塊之一。該模塊封裝了對數據表的查詢操作,使得開發人員可以通過類似 LINQ 的語法,對數據進行高效、簡潔、安全地操作。同時,SqlSugar 還提供了 Filter、Join、GroupBy、OrderBy 和 Select 等方法,可以極大地豐富查詢語句的功能。

在 Queryable 模塊中,SqlSugar 定義了一些基本的查詢方法,包括 First、Single、ToList、ToDataTable 等,這些方法返回的對象都繼承自 ISugarQueryable 接口,使得開發人員可以方便地根據需要對查詢結果進行轉換和處理。

SqlBuilder 模塊

SqlBuilder 模塊用于構建 SQL 語句,它允許開發人員直接使用字符串操作來構建 SQL 語句,SqlSugar 會自動將字符串轉換成可執行的 SQL 語句并執行。

在 SqlBuilder 模塊中,SqlSugar 提供了一系列的輔助方法,幫助開發人員構建 SQL 語句。例如,Append 方法用于添加 SQL 片段、AddParameters 方法用于添加 SQL 參數、ExecuteSqlQuery 方法用于執行查詢語句等。

Attributes 模塊

Attributes 模塊包含了 SqlSugar 中定義的特性,其中最常用的是 SugarColumn 特性,用于定義數據表和實體類之間的映射關系。此外,還有 SugarTable、SugarDatabase、SugarFunction 和 SugarParameter 等多個特性,可以用于定義數據表、數據庫、函數和參數等信息。在 Attributes 模塊中,SqlSugar 使用反射機制獲取對象的屬性信息,并根據特性信息進行處理。同時,SqlSugar 還充分利用了 C# 中的特性繼承性,使得開發人員可以方便地對實體類中的屬性進行分類管理和定義。

SqlSugar 的實現原理主要有以下幾個方面:

1. 利用反射機制獲取實體類的屬性信息,并根據這些信息動態生成 SQL 語句。

2. 使用 C# 中的委托機制,消除了開發人員需要手寫 SQL 語句的繁瑣操作。

3. 通過使用連接字符串,實現了與多種類型的數據庫連接,使得開發人員可以輕松地切換數據庫類型。

4. 使用緩存技術,可以大大提高數據訪問的效率。SqlSugar 內部采用了一種 “三級緩存” 的方式,將實體類數據緩存在內存中,使得在頻繁查詢數據時,能夠快速地返回結果。

SqlSugar 可以與各種對象進行關聯映射,使得開發者能夠更加方便地操作數據庫。

以下是 SqlSugar 的初級用法:

創建實體類

使用 SqlSugar 前需要先創建實體類,并在實體類中定義與數據表中字段相對應的屬性,例如:

[SugarTable("Student")]
public class Student
{
    [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
    public int Id { get; set; }
    
    [SugarColumn(ColumnDataType = "nvarchar", Length = 50, Nullable = false)]
    public string Name { get; set; }

    [SugarColumn(ColumnName = "ClassId")]
    public int? Class { get; set; }
}

以上代碼定義了一個名為 “Student” 的實體類,其中 “SugarTable” 特性指定了數據表的名稱,而 “SugarColumn” 特性則針對每一個屬性進行了映射,包括列名、數據類型、長度、是否允許為空等。

創建數據庫連接

在使用 SqlSugar 進行操作前,需要先創建數據庫連接,例如:

SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
{
    ConnectionString = "server=localhost;database=MyDatabase;uid=root;pwd=123456",
    DbType = DbType.MySql,
    IsAutoCloseConnection = true,
    InitKeyType = InitKeyType.Attribute
});

以上代碼中,使用 ConnectionConfig 指定了數據庫連接字符串、數據庫類型、是否自動關閉連接和主鍵類型等信息,創建 SqlSugarClient 后即可對數據庫進行操作。

常用操作

SqlSugar 支持大多數常用的數據庫操作,例如查詢、新增、更新和刪除等。以下是一些簡單的示例:

查詢:

var students = Db.Queryable<Student>().ToList();

以上代碼中,使用 “Queryable” 方法獲取 “Student” 數據表的所有數據,并將結果轉換為 List 類型。

新增:

var student = new Student()
{
    Name = "binjie09",
    Class = 1
};
Db.Insertable(student).ExecuteCommand();

以上代碼中,定義了一個名為 “student” 的新學生,并使用 “Insertable” 方法將其添加到 “Student” 數據表中。

更新:

Db.Updateable<Student>()
    .SetColumns(s => new Student() { Name = "binjie09-update" })
    .Where(s => s.Name == "binjie09")
    .ExecuteCommand();

以上代碼中,使用 “Updateable” 方法對 “Student” 數據表進行更新操作,將名稱為 “binjie09” 的學生的名稱改為 “binjie09-update”。

刪除:

Db.Deleteable<Student>().Where(s => s.Class == 1).ExecuteCommand();

以上代碼中,使用 “Deleteable” 方法對 “Student” 數據表進行刪除操作,刪除班級為 1 的所有學生。

以上是 SqlSugar 的初級用法,可以幫助您快速入門并實現基本的數據庫操作。

以下是 SqlSugar 的一些高級用法:

多表查詢

使用 SqlSugar 可以輕松實現多表查詢,例如:

var queryable = Db.Queryable<Student, Class>((s, c) => new object[]
{
    JoinType.Inner, s.ClassId == c.Id
}).Select((s, c) => new { s.Id, s.Name, ClassName = c.Name });

上述代碼中,“Student” 和 “Class” 兩個實體類進行了內連接,其中 “Student” 類中的 “ClassId” 屬性與 “Class” 類中的 “Id” 屬性相關聯。

Lambda 表達式

SqlSugar 支持Lambda表達式,可以更加方便地編寫查詢語句,例如:

var list = Db.Queryable<Student>().Where(s => s.Age > 18).ToList();

上述代碼中,使用 “Where” 方法對 “Student” 實體類進行了篩選,只返回年齡大于18歲的學生信息。“ToList()” 方法表示將篩選結果轉換成List類型。

存儲過程

SqlSugar 還支持調用存儲過程,例如:

var result = Db.Ado.UseStoredProcedure<dynamic>(() =>
{
    var p1 = new SugarParameter("@Id", 1);
    var p2 = new SugarParameter("@Name", "binjie09");
    var p3 = new SugarParameter("@Age", 20);

    return ("GetStudentInfo", new SugarParameter[] { p1, p2, p3 });
});

上述代碼中,使用 “UseStoredProcedure” 方法調用名為 “GetStudentInfo” 的存儲過程,并傳遞三個參數。返回結果為動態類型。

事務處理

SqlSugar 提供了事務處理功能,可以保證多次數據庫操作的原子性,例如:

try
{
    Db.Ado.BeginTran();
    //...
    Db.Ado.CommitTran();
}
catch (Exception ex)
{
    Db.Ado.RollbackTran();
}

上述代碼中,使用 “BeginTran” 方法開啟一個事務,在try語句塊中進行多個數據庫操作,在發生異常時使用 “RollbackTran” 方法回滾事務,否則使用 “CommitTran” 方法提交事務。

以上是 SqlSugar 的一些高級用法,可以根據具體的需求來選擇使用。

官方教程:https://www.donet5.com/Home/Doc。

責任編輯:姜華 來源: 今日頭條
相關推薦

2009-03-24 09:17:58

驅動GSMAndroid

2009-03-24 08:30:54

AndroidGoogle移動os

2009-06-18 14:00:51

2009-12-03 17:41:40

PHP應用發展

2021-10-25 19:52:52

IntentFilte

2010-04-26 18:17:19

Oracle存儲過程

2009-09-25 14:23:39

2009-09-28 10:39:01

Hibernate基礎

2009-11-11 17:02:36

Visual Stud

2009-11-25 17:05:56

PHP5對象simpl

2010-08-09 13:15:05

DB2 Capture

2009-12-18 10:39:50

路由器關鍵技術

2010-03-08 17:18:46

Linux du命令

2010-04-12 10:53:07

Oracle SQL

2010-04-26 14:32:21

Oracle SQL

2010-07-02 11:19:31

IP協議頭格式

2009-11-11 14:18:00

動態路由協議

2009-09-14 13:50:35

LINQ編程模型

2009-09-08 15:56:50

Linq使用Group

2010-01-06 13:50:37

.NET Framew
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产有码| 国产乱码精品一品二品 | 在线免费av电影 | 国产在线97 | 欧美久久精品一级c片 | 蜜桃久久 | 精品国产乱码久久久久久蜜柚 | 国产精品不卡视频 | 黄色国产视频 | 超碰在线免费av | 久久久久国产精品午夜一区 | 狠狠做深爱婷婷综合一区 | 成人免费淫片aa视频免费 | 久久久不卡网国产精品一区 | 国产精品成人品 | 亚洲精品视频在线看 | 国产成人精品久久二区二区91 | 91久色 | 国产乱码精品一品二品 | 亚洲成人精品 | 日韩一区二区在线观看视频 | 亚洲精品永久免费 | 久久精品 | 99精品久久久 | 精品美女 | 日韩欧美网 | 久久久久久电影 | 狠狠涩| 日韩午夜电影在线观看 | 午夜a v电影 | 日韩www视频| 中文字幕视频免费 | www.国产一区 | 亚洲电影一区 | 欧美精品一区二区三区在线播放 | 国产成人福利在线 | 久久久久久久久久久高潮一区二区 | 国产一区二区自拍 | 日韩中文字幕区 | 亚洲欧洲激情 | 日本精品一区二区 |