給各位聚聚和大大介紹一個開源項目 Expression2Sql(二)
前一陣子給大家介紹了一個可以將Expression表達式樹解析成Transact-SQL的開源項目Expression2Sql。
簡單易用,幾分鐘即可上手使用,因為博主在設計Expression2Sql的時候就盡可能的按照Transact-SQL的語法語義風格來設計,只要調用者熟悉基本的Transact-SQL語法即可瞬間無憂開碼,大大降低了學習Expression2Sql的成本,甚至零成本。對象化操作,鏈式編程,任意組裝sql,自動生成表別名,參數化賦值,防止sql注入,支持SQLServer、MySQL、Oracle、SQLite等多數據庫,生成極度美觀的sql字符串(格式化)等諸多優點。
具體詳情可以前往此篇博文一探究竟:
Expression2Sql源碼托管地址: https://github.com/StrangeCity/Expression2Sql
諸多開源項目收錄: http://www.cnblogs.com/StrangeCity/p/OpenSourceProject.html
之后得到了廣大讀者的一些好評,也使得博主更有動力繼續更新下去,然后一些園友也給出了一些極具建設性的意見,也有部分園友反饋了一些bug。最近一段時間,博主也集中精力,抽出一些時間做了一次更新,本篇文章將介紹本次更 新的內容 。
一、在做形參賦值時報錯,現已解決。
二、對于括號優先級的處理,現已支持。
三、增加Insert方法

四、提供靜態類和實例類的兩種調用方式
Expression2Sql組件的核心對象ExpressionToSql是實例類,調用的時候還得對象實例化,然后通過構造函數注入數據庫sql語法分析器。但是博主考慮到很多時候,工作或學習當中,一般單數據庫類型居多,所以使用靜態類來調用,會非常的方便快捷。于是博主拋磚引玉,封裝了基于SQLServer、MySQL、Oracle、SQLite數據庫的的靜態類。當然調用方可以借鑒這些靜態類,自行封裝這4種常用數據庫之外的靜態類。
1 ExpressionToSql<UserInfo> userInfoSql = new ExpressionToSql<UserInfo>(new MySQLSqlParser()); 2 Printf( 3 userInfoSql.Select().Where(u => u.Id != 1), 4 "查詢單表,帶where條件,實例類" 5 ); 6 7 8 Printf( 9 ExpressionToSqlSQLServer.Select<UserInfo>(). 10 Where(u => u.Name == "張三"), 11 "SQLServer靜態類" 12 );