iT邦幫忙

DAY 8
1

Kuick Application & ORM Framework系列 第 8

Kuick -- 資料表名稱與欄位名稱定義

如果你是 Entity 極端的開發者,不需考慮資料庫規格建立的細節,完全依據程式物件思考商業邏輯即可。如果你想控制所建立的資料庫規格,也可以透過程式定義達成。
Kuick Entity 以程式開發者為中心,採行 Code First 設計,在 DBA 建立資料庫並提供有權限執行 DDL 與 DML 的資料庫使用者帳號之後,其他所有的資料庫規格與預設資料,完全皆由開發者以 Entity 定義與系統初始階段同步。

Kuick Entity 對於資料庫操控支援範圍如下表:

1. Transaction Control 完整支援交易控制
包含 Begin, Rollback, Commit

2. DML: Data Manipulation Language 完整支援資料操作語言
包含 Select, Insert, Update, Delete。

3. DDL: Data Definition Language 支援部份資料定義語言
支援 Create, Drop, Alert,基於資料安全性考量而不提供 Truncate。
對於 Column 的 Alert 步驟:
1). Add column, anyway allow null first.
2). Batch updates default value.
3). Alter again if not allow null.

4. DCL: Data Control Language 不支援資料控制語言
程式不觸及 DBA 管理權責範圍的 Grant, Revoke 指令。

針對資料庫名稱與欄位定義的設定,Kuick Entity 實踐約定優於配置 (Convention over configuration) 的軟體設計方式,預設的轉換方式為 Pascal 命名轉成以下底線區隔單字再以全大寫字母命名,實作於 Kuick.Data.PascalToUpperCasingConvention 類別。專案可以自行實作資料庫名稱與欄位定義的約定轉換方式,透過 Kuick.Data.SqlNamingConvention 的 AssignDefaultNamingConvention 方法,在系統啟動的 PreStart 區段指定即可。

資料表名稱定義順序
1. 透過 override TableName property,定義資料表名稱

public override string TableName
{
	get
	{
		return "T_USER";
	}
}

2. 提供 TABLE_NAME 的 const field,定義資料表名稱

public const string TABLE_NAME = "T_USER";

3. 提供 Schema 的 inner class,裡面包含 TABLE_NAME 的 const field,定義資料表名稱

public class Schema
{
	public const string TABLE_NAME = "T_USER";
}

4. 依據預設的轉換方式定義資料表名稱
PascalToUpperCasingConvention 以 Entity class 名稱進行轉換,轉換原則是去除 class 名稱的 Entity 後綴詞,補上前置詞 T_,再將結果轉成大寫,所以,UserEntity 的資料表名稱為 T_USER。

資料欄位定義順序
1. 透過 ColumnSpec 指定欄位名稱

[ColumnSpec("USER_NAME")]
public string UserName { get; set; }

2. 提供與 propety 同名的 const field,定義欄位名稱

public const string USER_NAME = "USER_NAME";

[ColumnSpec]
public string USER_NAME { get; set; }

3. 提供 Schema 的 inner class,裡面包含與 propety 同名的 const field,定義欄位名稱

public class Schema
{
	public const string USER_NAME = "USER_NAME";
}

4. 依據預設的轉換方式定義欄位名稱
PascalToUpperCasingConvention 以 propety 名稱進行轉換,轉換原則是以下底線區分 propety 名稱裡的複合單字,再將結果轉成大寫,所以,UserName 的欄位名稱為 USER_NAME。

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


上一篇
Kuick -- 使用 NuGet 建立 ORM 專案
下一篇
Kuick -- Entity Column 定義
系列文
Kuick Application & ORM Framework34

尚未有邦友留言

立即登入留言