iT邦幫忙

DAY 23
2

Sql 物件解析器 (Kuick.Data.SqlParser),依據 Sql Command 物件,以及資料庫提供者實作的資料指令生成器 (Kuick.Data.SqlBuilder),於執行期共同產生出 Sql Command 字串。

請開啟原始檔 Kuick.Data.SqlParser

<建構式>
1. 接受 1 個參數:資料指令生成器 (SqlBuilder)
僅使用於解析 Insert 指令
ParseInsert -- 新增指令與相關參數 (SqlParameter)

2. 接受 2 個參數:資料指令生成器 (SqlBuilder),Sql Command 物件 (Sql)
使用於解析 Select, Update, Delete 指令
ParseSelect -- 聚合查詢、筆數計算、Distinct 查詢、一般查詢
ParseUpdate -- 修改指令
ParseDelete -- 刪除指令

目前僅新增指令轉成包含 SqlParameter 操作,未來將會將此功能擴及所有部份。

<資料庫規格>
SqlParser 與 SqlBuilder 之間的功能,很容易因為個人實作的認知導致不同的解讀,建立資料庫規格操作指令,是目前正在考慮是否適合移至 SqlParser 處理,相關的方法包含:

  1. BuildCreateTableCommandText 產生資料表建立指令
  2. BuildCreateIndexCommandText 產生索引建立指令
  3. BuildDropIndexCommandText 產生索引刪除指令
  4. BuildAlterColumnCommandText 產生欄位修改指令
  5. BuildAddColumnCommandText 產生欄位新增指令

<選取值>

  1. BuildAggregations -- 聚合選取
  2. BuildSelectColumnNames -- 欄位選取
  3. BuildSelectLiterals -- 自定義選取
  4. BuildSelectDistinctColumnNames -- Distinct 選取
  5. BuildCountColumnName -- 筆數計算選取 (沒有放在聚合選取裡,獨立方法實作)

<設定值>
BuildSettingValues -- 使用於解析 Update 指令

<所操作的資料表>

  1. BuildTable -- 主要操作的資料表
  2. BuildJoinTables -- 目前僅支援 LEFT OUTER JOIN

<條件>

  1. BuildWhere -- Where 條件
  2. BuildGroupBy -- Group By 條件
  3. BuildHaving -- Having 條件
  4. Reduce -- Sql 物件化過程,時常會因為物件過度包覆造成解析出多餘的 Sql Command,這個方法用於消除不必要的條件包覆。

<排序>
BuildOrderBy -- 排序

========================================
鐵人賽分享列表:Kuick Application & ORM Framework
開放原始碼專案:kuick.codeplex.com
直接下載原始碼:Kuick
下載相關文件檔:C# Code Conventions and Design Guideline
相關教學影片區:Kuick on YouTube


上一篇
Kuick -- 資料庫抽象提供者
下一篇
Kuick -- Entity 實作支援 dynamic
系列文
Kuick Application & ORM Framework34

1 則留言

我要留言

立即登入留言