iT邦幫忙

DAY 21
2

Kuick Application & ORM Framework系列 第 21

Kuick -- Sql Command 物件化

接下來 3 篇分享內容為:
<Kuick -- Sql Command 物件化>
說明下圖所呈現的功能,是如何透過物件建立出來的。

相關物件包含:
Kuick.Data.Sql
Kuick.Data.Sql<T>
Kuick.Data.SqlAggregate
Kuick.Data.SqlExpression
Kuick.Data.SqlCriterion
Kuick.Data.SqlCriterion<T>
Kuick.Data.SqlJoin
Kuick.Data.SqlLiteral
Kuick.Data.SqlOrderBy
Kuick.Data.SqlSet

<Kuick -- 資料庫抽象提供者>
細說資料庫提供者該實作的抽象類別包含那些:
Kuick.Data.SqlBuilder
Kuick.Data.SqlDatabase
Kuick.Data.SqlReader

<Kuick -- Sql 物件解析器>
執行期,載入設定檔定義的資料庫提供者,將 Sql 物件轉換成如下圖的 Sql Command。

相關物件包含:
Kuick.Data.SqlParser

與 Sql Command 相關的物件包含 10 個,本分享僅說明其中 6 個關鍵類別:

<Kuick.Data.Sql -- Sql 指令物件>
Sql 物件繼承自 SqlCriterion,主要提供設計期未知的資料操作。
1. 建構式
參數 1 -- 資料操作對象 (Entity)
參數 2 -- 邏輯運算式 (AND | OR)

2. property
這些屬性值,都是透過程式建構查詢語法所設定的。
Schema -- 資料規格
AsName -- 資料表暱名
Aggregations -- 聚合查詢指令集合
SelectColumnNames -- 選取欄位集合
SelectLiterals -- 選取指令集合
SelectDistinctColumnNames -- 去除重覆資料欄位集合
SettingValues -- 更新設定值集合
Joins -- 資料表連結集合
GroupByColumnNames -- GroupBy欄位集合
Havings -- GroupBy查詢指令集合
OrderBys -- 排序集合
Top -- 前面筆數
PageSize -- 分頁筆數
PageIndex -- 分頁數
Command -- 解析後指令
RandomCount -- 隨機選取筆數

3. function
Sql 物件的方法分成 2 類,一是設定 property 值的方法,這部份就不多說,另一類是用來觸發資料操作,這類方法有:
Query -- 選取
QueryFirst -- 選取第一筆
LandscapeQuery -- 選取些條件第一筆及前後筆資料,用來呈現資料上下筆連結。
Random -- 隨機選取數筆
Aggregate -- 聚合查詢
DistinctQuery -- 去除重覆資料選取
DistinctDateQuery -- 日期格式去除重覆資料選取
Count -- 計算筆數
Exists -- 是否存在判斷
Modify -- 資料更新
Remove -- 資料刪除

<Kuick.Data.Sql<T> -- Sql 泛型指令物件>
Sql<T> 繼承自 Sql,提供設計期己知的資料操作,與 Sql 類別主要差別在於支援泛型物件 (IEntity)。

<Kuick.Data.SqlExpression -- 條件運算式物件>
運算式物件,處理 2 個值之間的比對,比對方法採用 Kuick.Data.SqlOperator 列舉,下面除了列舉出運算子之外,還將輸出的 Sql 指令在最後列出:
LessThan -- 小於 <
LessEqualTo -- 小於等於 <=
EqualTo -- 等於 =
GreatEqualTo 大於等於 >=
GreatThan 大於 >
NotEqualTo 不等於 !=
Like 相似 LIKE
NotLike 不相似 NOT LIKE
In 存在於,也可以處理子查詢 IN
NotIn 不存在於 NOT IN
IsNull 空值 IS NULL
IsNotNull 非空值 IS NOT NULL
StartWith 起始字元存在 LIKE
NotStartWith 起始字元不存在 LIKE
EndWith 結束字元存在 LIKE
NotEndWith 結束字元不存在 NOT LIKE

支援的資料型態有:
string, int, decimal, long, float, bool, char, byte, DateTime, string[], int[], IEntity[], System.Drawing.Color, Kuick.Data.Column, Kuick.Data.Sql

<Kuick.Data.SqlCriterion -- 邏輯運算式物件>
SqlCriterion 主要提供設計期未知的資料操作。
1. 建構式
參數 1 -- 邏輯運算式 (AND | OR)

2. property
Logic -- 邏輯運算式
IsNot -- 否定指示
Criteria -- 子邏輯運算式物件集合
Expressions -- 條件運算式物件集合
Literals -- 實字條件物件集合

3. function
SqlCriterion 物件的方法用以設定 property 的值。

<Kuick.Data.SqlCriterion<T> -- 泛型邏輯運算式物件>
SqlCriterion<T> 繼承自 SqlCriterion,提供設計期己知的資料操作,與 SqlCriterion 類別主要差別在於支援泛型物件 (IEntity)。

<Kuick.Data.SqlOrderBy -- 排序物件>
這是一個簡單類別,用來記載那一個『欄位』的『排序方向』為何。排序方向採用 Kuick.Data.SqlDirection 列舉,包含:
Ascending -- 遞增排序
Descending -- 遞減排序

其他更細節的設計,就請您看看原始檔的實作。

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


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

1 則留言

我要留言

立即登入留言