iT邦幫忙

DAY 5
1

Kuick Hands on Labs系列 第 5

Kuick Hands on Labs -- 5. Entity CRUD (1)

  • 分享至 

  • xImage
  •  

直接挑戰微軟Entity Framework 是需要勇氣!
先以資料新修刪操作為例,比較Entity Framework與Kuick的差異,雖然這不是ORM的全部,但它可是最常使用的功能之一,可以直覺且快速地撰寫程式碼,是每一個軟體架構永遠追求的目標。

Kucik與Entity Framework (EF)的設計原理不同,EF對於資料的CRUD操作,主要是透過DbContext間接達成。在Kuick的架構裡,是透過繼承而賦予每一個Entity具備直接與資料庫溝通的能力,這一點實作理念上的差異,也造就了Kuick程式碼簡單直覺的結果!

Kuick在ORM上的功能與EF不同的特性如下:

  1. 連結資料庫是部署議題,不需在程式設計期就指定連結的資料庫是MSSql, Oracle或是MySQL,而且每一個Entity皆可單獨設定連結不同的資料庫

  2. Entity與生具備直接跟資料庫溝通的能力,不需透過其他類別即可達成CRUD。

  3. Entity具備 7 個公開事件,協助將資料庫Trigger功能轉成程式邏輯

    public event EntityEventHandler BeforeAdd; // 新增 前
    public event EntityEventHandler BeforeModify; // 修改 前
    public event EntityEventHandler BeforeRemove; // 刪除 前

    public event InstanceEventHandler AfterSelect; // 選取 後
    public event EntityEventHandler AfterAdd; // 新增 後
    public event EntityEventHandler AfterModify; // 修改 後
    public event EntityEventHandler AfterRemove; // 刪除 後

  4. Entity具備 4 個私有事件,協助進行資料異動稽核

    private void DifferenceBefore(IEntity sender, EntityEventArgs e);
    private void DifferenceAfterAdd(IEntity sender, EntityEventArgs e);
    private void DifferenceAfterModify(IEntity sender, EntityEventArgs e);
    private void DifferenceAfterRemove(IEntity sender, EntityEventArgs e);

  5. Entity能自我描述資料欄位規格。

    public Table Table;
    public List Columns;

  6. Entity能自我理解那些欄位資料已經修改。

    public bool HasDirtyColumn;
    public List GetDirtyColumns();

  7. .Net 實值型別 (Value Types) 對應資料庫欄位值的null操作。

    public bool IsNullCheck(string columnNameOrPropertyName);
    public void IsNull(string columnNameOrPropertyName);
    public void NotNull(string columnNameOrPropertyName);
    private void SetNull(Column column);

所有特性的細節,留待後續說明。


上一篇
Kuick Hands on Labs -- 4. Many-to-Many 資料多對多關連
下一篇
Kuick Hands on Labs -- 6. Entity CRUD (2)
系列文
Kuick Hands on Labs30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言