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

學(xué)習(xí)SqlSugar ORM框架的關(guān)鍵:對(duì)其模塊與實(shí)現(xiàn)原理的詳細(xì)分析

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

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ù)訪問層代碼。

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

Ado 模塊

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

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

Queryable 模塊

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

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

SqlBuilder 模塊

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

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

Attributes 模塊

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

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

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

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

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

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

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

以下是 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ù)類型、長度、是否允許為空等。

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

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

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ù)庫連接字符串、數(shù)據(jù)庫類型、是否自動(dòng)關(guān)閉連接和主鍵類型等信息,創(chuàng)建 SqlSugarClient 后即可對(duì)數(shù)據(jù)庫進(jìn)行操作。

常用操作

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

查詢:

var students = Db.Queryable<Student>().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<Student>()
    .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<Student>().Where(s => s.Class == 1).ExecuteCommand();

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

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

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

多表查詢

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

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” 兩個(gè)實(shí)體類進(jìn)行了內(nèi)連接,其中 “Student” 類中的 “ClassId” 屬性與 “Class” 類中的 “Id” 屬性相關(guān)聯(lián)。

Lambda 表達(dá)式

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

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

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

存儲(chǔ)過程

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

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

事務(wù)處理

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

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

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

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

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

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2009-03-24 08:30:54

AndroidGoogle移動(dòng)os

2009-03-24 09:17:58

驅(qū)動(dòng)GSMAndroid

2009-06-18 14:00:51

2009-09-25 14:23:39

2009-09-28 10:39:01

Hibernate基礎(chǔ)

2010-04-26 18:17:19

Oracle存儲(chǔ)過程

2009-11-11 17:02:36

Visual Stud

2009-12-03 17:41:40

PHP應(yīng)用發(fā)展

2021-10-25 19:52:52

IntentFilte

2010-08-09 13:15:05

DB2 Capture

2009-11-11 14:18:00

動(dòng)態(tài)路由協(xié)議

2009-11-25 17:05:56

PHP5對(duì)象simpl

2010-01-06 16:12:52

分析Json stri

2009-09-09 09:48:43

Linq延遲加載

2009-09-14 16:21:34

LINQ To XML

2009-10-10 13:52:57

VB Update方法

2009-12-18 10:39:50

路由器關(guān)鍵技術(shù)

2010-03-08 17:18:46

Linux du命令

2010-04-12 10:53:07

Oracle SQL

2010-04-26 14:32:21

Oracle SQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 伊人亚洲 | 国产精品久久久久久一区二区三区 | 成人av一区二区三区 | www.天天操.com | 国产精品久久久久影院色老大 | 成人一区二区三区在线 | 久久久黑人 | 能看的av | 精品亚洲一区二区三区四区五区 | 国产高清视频一区 | 久久精品欧美一区二区三区不卡 | 亚洲在线免费 | 亚洲欧美激情国产综合久久久 | 国产精品久久久久久久久久久久久 | 99精品视频在线 | 国产97色| 中文字幕日韩欧美一区二区三区 | 成人精品鲁一区一区二区 | av在线免费观看不卡 | 九色在线| 欧美日韩一区二区三区四区 | 精品国产乱码久久久久久蜜退臀 | 97免费在线视频 | 亚洲社区在线 | 日韩中文一区二区三区 | 亚洲综合国产精品 | 午夜在线小视频 | 欧美视频一区二区三区 | 蜜月va乱码一区二区三区 | 可以看黄的视频 | av黄色在线 | 中文字幕亚洲区一区二 | 免费黄网站在线观看 | 精品婷婷 | 亚洲国产日韩欧美 | 欧美激情亚洲 | 毛片网站在线观看视频 | 日本一区二区电影 | 一区网站 | 欧美一区二区久久 | 亚洲欧洲精品一区 |