許多轉型 C# 的開發者苦於缺乏系統性的入門教材。本系列將以實務導向,從資料庫設計、代碼生成、分層架構到具體模組實作,帶領讀者建構一個可維護、可擴充的 WinForm 企業級應用框架。首篇聚焦於「地基」:資料庫命名規範、模型設計工具選擇,以及如何透過代碼生成器一鍵產出完整專案骨架。
採用前綴快速識別業務域:
TB_:基礎資料表(字典、代碼表)T_ACL_:權限/存取控制相關表TBAPP_:工作流/應用流程表T_:一般業務資料表ID,建議使用 GUID (uniqueidentifier) 而非自增整數。優點:分散式環境不衝突、建立實體即知主鍵、利於父子表關聯維護。{ReferencedTableName}_ID(如 User_ID, Contact_ID),不帶表前綴。Name 而非 CustomerName。CreateTime (datetime) 供時間排序。使用 PowerDesigner 等專業建模工具:支援邏輯/物理模型轉換、多資料庫 SQL 生成、關聯圖視覺化、版本控管,大幅提升設計效率與品質。
生成器依指定的命名空間與表前綴,產出標準分層結構:

若需 WCF 服務化,可再增加:

專案中途新增資料表時,重新生成對應代碼並複製至專案即可。因命名空間、前綴固定,生成代碼自動符合專案慣例,避免衝突與冗餘。
[DataContract]
public class CustomerInfo : BaseEntity {
#region Field Members
private string m_ID = System.Guid.NewGuid().ToString(); // 自動賦予新 GUID
private string m_Name;
private int m_Age = 0;
private string m_Creator;
private DateTime m_CreateTime;
#endregion
#region Property Members
[DataMember] public virtual string ID { get => m_ID; set => m_ID = value; }
[DataMember] public virtual string Name { get => m_Name; set => m_Name = value; }
[DataMember] public virtual int Age { get => m_Age; set => m_Age = value; }
[DataMember] public virtual string Creator { get => m_Creator; set => m_Creator = value; }
[DataMember] public virtual DateTime CreateTime { get => m_CreateTime; set => m_CreateTime = value; }
#endregion
}
new Guid().ToString() 於建構子隱含執行,新實體即具備唯一識別碼。良好的資料庫規範是系統穩定演進的基石;代碼生成器將規範落地為標準化專案結構,消除重複勞動,確保團隊協作一致性。下一篇將深入剖析 DAL/BLL 代碼生成細節、介面契約設計,以及如何優雅地實作「富領域模型」。