日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
學(xué)習(xí)SqlSugarORM框架的關(guān)鍵:對(duì)其模塊與實(shí)現(xiàn)原理的詳細(xì)分析

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

Core 模塊

Core 模塊是 SqlSugar 的核心模塊,主要實(shí)現(xiàn)了 ORM 映射的核心功能。其中包括了一個(gè)代碼生成器,可以根據(jù)相關(guān)配置信息自動(dòng)生成對(duì)應(yīng)的實(shí)體類和數(shù)據(jù)訪問(wèn)層代碼。

在 Core 模塊中,SqlSugar 使用反射機(jī)制獲取實(shí)體類屬性信息,在運(yùn)行時(shí)動(dòng)態(tài)生成 SQL 語(yǔ)句。同時(shí),SqlSugar 中定義了一系列的委托類型,通過(guò)委托實(shí)現(xiàn)對(duì) SQL 語(yǔ)句、參數(shù)值和實(shí)體數(shù)據(jù)的封裝和處理,大大簡(jiǎn)化了數(shù)據(jù)訪問(wèn)層的編寫(xiě)工作。此外,SqlSugar 中還引入了緩存機(jī)制,大大提高了數(shù)據(jù)訪問(wèn)效率。

Ado 模塊

Ado 模塊是 SqlSugar 中最底層的模塊,用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。主要包括了與數(shù)據(jù)庫(kù)連接相關(guān)的類和方法,例如 ConnectionConfig、SqlConnection、SqlCommand、SqlDataAdapter 等,通過(guò)這些類和方法,SqlSugar 可以實(shí)現(xiàn)與多種類型的數(shù)據(jù)庫(kù)連接。

在 Ado 模塊中,SqlSugar 將數(shù)據(jù)庫(kù)連接分為兩個(gè)部分:連接池和操作命令。在連接池中,SqlSugar 提供了一系列的方法,包括創(chuàng)建連接、獲取連接、釋放連接和關(guān)閉連接等。在操作命令中,SqlSugar 使用 SqlCommand 類對(duì) SQL 語(yǔ)句進(jìn)行執(zhí)行,并借助 SqlParameters 類封裝參數(shù)值。

Queryable 模塊

Queryable 模塊用于實(shí)現(xiàn)查詢功能,它是 ORM 中最常用的模塊之一。該模塊封裝了對(duì)數(shù)據(jù)表的查詢操作,使得開(kāi)發(fā)人員可以通過(guò)類似 LINQ 的語(yǔ)法,對(duì)數(shù)據(jù)進(jìn)行高效、簡(jiǎn)潔、安全地操作。同時(shí),SqlSugar 還提供了 Filter、Join、GroupBy、OrderBy 和 Select 等方法,可以極大地豐富查詢語(yǔ)句的功能。

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

SqlBuilder 模塊

SqlBuilder 模塊用于構(gòu)建 SQL 語(yǔ)句,它允許開(kāi)發(fā)人員直接使用字符串操作來(lái)構(gòu)建 SQL 語(yǔ)句,SqlSugar 會(huì)自動(dòng)將字符串轉(zhuǎn)換成可執(zhí)行的 SQL 語(yǔ)句并執(zhí)行。

在 SqlBuilder 模塊中,SqlSugar 提供了一系列的輔助方法,幫助開(kāi)發(fā)人員構(gòu)建 SQL 語(yǔ)句。例如,Append 方法用于添加 SQL 片段、AddParameters 方法用于添加 SQL 參數(shù)、ExecuteSqlQuery 方法用于執(zhí)行查詢語(yǔ)句等。

Attributes 模塊

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

SqlSugar 的實(shí)現(xiàn)原理主要有以下幾個(gè)方面:

1. 利用反射機(jī)制獲取實(shí)體類的屬性信息,并根據(jù)這些信息動(dòng)態(tài)生成 SQL 語(yǔ)句。

2. 使用 C# 中的委托機(jī)制,消除了開(kāi)發(fā)人員需要手寫(xiě) SQL 語(yǔ)句的繁瑣操作。

3. 通過(guò)使用連接字符串,實(shí)現(xiàn)了與多種類型的數(shù)據(jù)庫(kù)連接,使得開(kāi)發(fā)人員可以輕松地切換數(shù)據(jù)庫(kù)類型。

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

SqlSugar 可以與各種對(duì)象進(jìn)行關(guān)聯(lián)映射,使得開(kāi)發(fā)者能夠更加方便地操作數(shù)據(jù)庫(kù)。

以下是 SqlSugar 的初級(jí)用法:

創(chuàng)建實(shí)體類

使用 SqlSugar 前需要先創(chuàng)建實(shí)體類,并在實(shí)體類中定義與數(shù)據(jù)表中字段相對(duì)應(yīng)的屬性,例如:

[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; }
}

以上代碼定義了一個(gè)名為 “Student” 的實(shí)體類,其中 “SugarTable” 特性指定了數(shù)據(jù)表的名稱,而 “SugarColumn” 特性則針對(duì)每一個(gè)屬性進(jìn)行了映射,包括列名、數(shù)據(jù)類型、長(zhǎng)度、是否允許為空等。

創(chuàng)建數(shù)據(jù)庫(kù)連接

在使用 SqlSugar 進(jìn)行操作前,需要先創(chuàng)建數(shù)據(jù)庫(kù)連接,例如:

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

以上代碼中,使用 ConnectionConfig 指定了數(shù)據(jù)庫(kù)連接字符串、數(shù)據(jù)庫(kù)類型、是否自動(dòng)關(guān)閉連接和主鍵類型等信息,創(chuàng)建 SqlSugarClient 后即可對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。

常用操作

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

查詢:

var students = Db.Queryable().ToList();

以上代碼中,使用 “Queryable” 方法獲取 “Student” 數(shù)據(jù)表的所有數(shù)據(jù),并將結(jié)果轉(zhuǎn)換為 List 類型。

新增:

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

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

更新:

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

以上代碼中,使用 “Updateable” 方法對(duì) “Student” 數(shù)據(jù)表進(jìn)行更新操作,將名稱為 “binjie09” 的學(xué)生的名稱改為 “binjie09-update”。

刪除:

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

以上代碼中,使用 “Deleteable” 方法對(duì) “Student” 數(shù)據(jù)表進(jìn)行刪除操作,刪除班級(jí)為 1 的所有學(xué)生。

以上是 SqlSugar 的初級(jí)用法,可以幫助您快速入門并實(shí)現(xiàn)基本的數(shù)據(jù)庫(kù)操作。

以下是 SqlSugar 的一些高級(jí)用法:

多表查詢

使用 SqlSugar 可以輕松實(shí)現(xiàn)多表查詢,例如:

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

上述代碼中,“Student” 和 “Class” 兩個(gè)實(shí)體類進(jìn)行了內(nèi)連接,其中 “Student” 類中的 “ClassId” 屬性與 “Class” 類中的 “Id” 屬性相關(guān)聯(lián)。

Lambda 表達(dá)式

SqlSugar 支持Lambda表達(dá)式,可以更加方便地編寫(xiě)查詢語(yǔ)句,例如:

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

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

存儲(chǔ)過(guò)程

SqlSugar 還支持調(diào)用存儲(chǔ)過(guò)程,例如:

var result = Db.Ado.UseStoredProcedure(() =>
{
    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” 方法調(diào)用名為 “GetStudentInfo” 的存儲(chǔ)過(guò)程,并傳遞三個(gè)參數(shù)。返回結(jié)果為動(dòng)態(tài)類型。

事務(wù)處理

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

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

上述代碼中,使用 “BeginTran” 方法開(kāi)啟一個(gè)事務(wù),在try語(yǔ)句塊中進(jìn)行多個(gè)數(shù)據(jù)庫(kù)操作,在發(fā)生異常時(shí)使用 “RollbackTran” 方法回滾事務(wù),否則使用 “CommitTran” 方法提交事務(wù)。

以上是 SqlSugar 的一些高級(jí)用法,可以根據(jù)具體的需求來(lái)選擇使用。

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


當(dāng)前名稱:學(xué)習(xí)SqlSugarORM框架的關(guān)鍵:對(duì)其模塊與實(shí)現(xiàn)原理的詳細(xì)分析
文章源于:http://www.5511xx.com/article/dhipcjj.html