天天看點

強大的拉姆表達式轉Sql 類庫 - SqlSugar 隐藏功能之Lambda

1、Lambda to sql 一直是ORM中最難的功能之一,如果有現成的解析庫那麼自已寫一個ORM難度将大大降低

2、通過Lambda作為KEY進行緩存操作,特别是倉儲模式想要拿到表達式進行通用查詢緩存 則需要用到表達式解析

3、學習愛好者,如果能夠較深入的理Lambda如何去解成Sql,那麼你對Lambda的了解将會更上一個層次,而不僅僅在使用上

SqlSugar除了有自帶的ORM功能,還是一款強大的拉姆達解析器  ,并且是市場上獨有 的拉姆達轉Sql類庫 

SqlSugar不僅小巧并且性能非常的好,毫不遜色于Dapper 甚至更加的優秀  ,至于性能别看其他人的測評 非常不靠譜,自個用了才知道,自個測了才知道

1、高性能  表達式解析速度遠超EF 

2、功能非常完整 ,并且是産品級的解析類庫,支援各種模式的解析

3、小巧你隻要引用SqlSugar一個DLL就能使用 解析各種資料庫 、支援Sql函數 、支援常用原生函數

.NET CORE / NET5   Nuget SqlSugarCore

.NET 4.5   Nuget SqlSugar 

.NET 4.0 Nuget SqlSuagr 4.x

我們先來看一下例子:

 下面是調試結果:

強大的拉姆表達式轉Sql 類庫 - SqlSugar 隐藏功能之Lambda

 通過上面的例子就能夠完美的将表達式轉換成Sql語句

 我們可以通過SqlSugar.DbType進行區分資料庫 并且進行執行個體化

基本和寫EF一樣常用的都會支援

我們在寫一個Like的例子

bool類型的解析是ORM解析的難點中的難點,情況多種多樣

多樣化的bool解釋的支援

多表查詢的支援,在多表查詢中我們是需要加字首的比如 我們想要 it.id 而不是id

支援實體類解析、查詢單個字段解析、匿名對象解析

例如orderby(it=>it.Name) 像這種我們就需要拿到Name

統計單 個字段

支援的C#函數:

.ToString  .Contains  .Length

.ToLower  .ToUpper  .ToSubstring 

.Equals    .HasValue  .Replace

.EndsWith  .StartsWith  .Trim

.HasValue  .Value  .AddDay  .Date

和常用的Convert.ToInt32等等 

SqlFunc.函數

SqlFunc函數下面包含了大量SQL函數  

5.1 支援特性比如我表名和實體名不一樣我們也可以實作

列名也非常容易

5.2 支援子查詢

通上面的學習你們想寫出下面的文法應該相當容易了 

實作上面的功能 總共用到Where的解析、列的解析和Select的解析

1、下面3個用到Where的解析

 2、下面1個用到列的解析

 3、下面1個用到Select的解析

  

你們的贊或者你們的 star 就是 開源者的動力 ,開源不容易和氣生财 

https://github.com/sunkaixuan/SqlSugar     

下一篇文章 我會介紹如何使用 SqlSugar 實作WebFirst模式開發代碼,領先CodeFirst和DbFirst的設計和開發理念,也我十多年開發經驗的彙總