Kuick Entity 與其他 ORM Framework 有什麼不同?
答:依據過往經驗,系統開發除了資料處理議題之外,充滿著各個客戶特有的商業需求,ORM 所定義的處理範圍屬於『資料層』層次,而 Kuick Entity 不僅實作 ORM 對於『資料層』的定義,並將功能延伸至包含『邏輯層』、『呈現層』與其他進階的功能,包含 Index, Trigger, Schema Synchronization, Hierarchy Data Structure, Cache, Audit, .. 這些部份後續將一一說明,首先介紹 Column 定義。
<資料層>
ORM 是如何定義資料層,不妨透過 Entity Framework 與 NHibernate 的介紹作為初步了解。
資料層的定義環繞在『對應層』、『概念層』、『儲存層』的實作,由於 Kuick Entity 採用 Code First 設計,對於這部份的實作方式皆採用 Attribute 於設計期定義於程式碼。
對應層:class 的 property 與 Table ColumnName 的對應
上一篇分享裡已經詳細說明class property 如何對應 Table ColumnName,這些說明可以參閱『Kuick Entity:資料表名稱與欄位名稱定義』內容。而程式撰寫的方式為:
[ColumnSpec("GENDER"]
public Gender Gender { get; set; }
概念層:以程式物件模型定義資料表欄位的抽象規格
透過 Kuick.Data.ColumnSpec 完成概念層定義,程式撰寫方式為:
[ColumnSpec("GENDER", SqlDataType.VarChar, SpecFlag.NotAllowNull, 8)]
public Gender Gender { get; set; }
儲存層:各類資料庫對於抽象規格的實作
目前在 kuick.codeplex.com 裡包含 MSSql 的實作,後續會再提供對於 Oracle, MySQL 的實作。
除此之外,Kuick Entity 還包含對於 Trigger, Index, Schema Synchronization 的處理,這些將另文介紹。
<邏輯層>
ORM 不該包含邏輯層,只是個人經驗所以增加這部份的功能,包含資料初始值、加解密、外部參照、階層式資料結構、快取、稽核...這些將另文介紹。
<呈現層>
ORM 也不該包含呈現,Kuick Entity 對於這部份採取規格主動定義,介面被動實作,這部份也將另文介紹。
========================================
鐵人賽分享列表:Kuick Application & ORM Framework
開放原始碼專案:kuick.codeplex.com
直接下載原始碼:Kuick
下載相關文件檔:C# Code Conventions and Design Guideline
相關教學影片區:Kuick on YouTube