Expression2Sql的一些語法更新


前言

  前一陣子給大家介紹了一個可以將Expression表達式樹解析成Transact-SQL的項目Expression2Sql。
  之后得到了廣大讀者的一些好評,也使得博主更有動力繼續更新下去,然后一些園友也給出了一些極具建設性的意見,也有部分園友反饋了一些bug。最近一段時間,博主也集中精力,抽出一些時間做了一次更新,本篇文章將介紹本次更新的內容
      簡單易用,幾分鍾即可上手使用,因為博主在設計Expression2Sql的時候就盡可能的按照Transact-SQL的語法語義風格來設計,只要調用者熟悉基本的Transact-SQL語法即可瞬間無憂開碼,大大降低了學習Expression2Sql的成本,甚至零成本。對象化操作,鏈式編程,支持多表復雜關聯查詢,任意組裝sql,自動生成表別名,參數化賦值,防止sql注入,支持SQLServer、MySQL、Oracle、SQLite等多數據庫,生成極度美觀的sql字符串(格式化)等諸多優點。
  Expression2Sql的設計初衷就是職責非常單一、干凈清爽,純粹就是輸入表達式樹,然后經過它的解析之后,便可返回Transact-SQL給調用方。所以它的使用場景主要是用於和第三方的ORM或者是基於ado.net的原生DbHelper幫助類做對接,使其能夠支持對象化、表達式樹的鏈式編程。

      具體詳情可以前往此篇博文一探究竟:介紹一個可以將Expression表達式樹解析成Transact-SQL的項目Expression2Sql

 

    
      感謝大家踴躍提意見,不少園友建議用Expression2Sql打造一個O/R mapping數據訪問組件,沒錯,這也是Expression2Sql的優勢。
  可以,在下一篇博文中,博主就講解 Expression2Sql + DbHelper + Mapping = ORM ,最大化解耦拆分成獨立的組件。

  偽代碼如下:

public static List<T> Query<T>(ExpressionToSql<T> expression)
{
    string sql = expression.Sql;
    DataTable dt = DbHelper.ExecuteDataTable(sql, expression.DbParams);
    List<T> list = Mapping.ToListEntity<T>(dt);
    return list;
}

 

 

在做形參賦值時報錯,現已解決。



 

對於括號優先級的處理,現已支持。

 

 

增加Insert方法



 

給查詢字段取別名


 

 

提供靜態類和實例類的兩種調用方式

Expression2Sql組件的核心對象ExpressionToSql是實例類,調用的時候還得對象實例化,然后通過構造函數注入數據庫sql語法分析器。但是博主考慮到很多時候,工作或學習當中,一般單數據庫類型居多,所以使用靜態類來調用,會非常的方便快捷。於是博主拋磚引玉,封裝了基於SQLServer、MySQL、Oracle、SQLite數據庫的的靜態類。當然調用方可以借鑒這些靜態類,自行封裝這4種常用數據庫之外的靜態類。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM