首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

循序漸進開發 WinForm 專案 (1):資料庫設計規範與專案框架自動生成

     編輯:關於.NET

前言

許多轉型 C# 的開發者苦於缺乏系統性的入門教材。本系列將以實務導向,從資料庫設計、代碼生成、分層架構到具體模組實作,帶領讀者建構一個可維護、可擴充的 WinForm 企業級應用框架。首篇聚焦於「地基」:資料庫命名規範、模型設計工具選擇,以及如何透過代碼生成器一鍵產出完整專案骨架。

一、資料庫表設計規範

1. 表名稱前綴分類

採用前綴快速識別業務域:

  • TB_:基礎資料表(字典、代碼表)
  • T_ACL_:權限/存取控制相關表
  • TBAPP_:工作流/應用流程表
  • T_:一般業務資料表

2. 欄位命名原則

  • 主鍵:統一命名 ID,建議使用 GUID (uniqueidentifier) 而非自增整數。優點:分散式環境不衝突、建立實體即知主鍵、利於父子表關聯維護。
  • 外鍵:格式 {ReferencedTableName}_ID(如 User_ID, Contact_ID),不帶表前綴。
  • 一般欄位:簡潔明瞭,如客戶名稱用 Name 而非 CustomerName。
  • 排序輔助:GUID 無序,需加 CreateTime (datetime) 供時間排序。

3. 設計工具推薦

使用 PowerDesigner 等專業建模工具:支援邏輯/物理模型轉換、多資料庫 SQL 生成、關聯圖視覺化、版本控管,大幅提升設計效率與品質。

二、專案框架自動生成

1. 分層架構規劃

生成器依指定的命名空間與表前綴,產出標準分層結構:

  • UI 層:WinForm/WPF 頁面與控制項
  • BLL 層:業務邏輯、驗證、工作流協調
  • DAL 層:資料存取實作(每種 DB 一個實現組件)
  • IDAL 層:資料存取介面定義
  • Entity 層:實體類別 (POCO)
  • Common 層:共用工具、基類、擴充方法

分層架構圖

2. 支援混合式開發擴充

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

  • WCF 服務邏輯層
  • WCF 服務合約/實作層
  • 客戶端 Proxy 層

混合式架構圖

3. 增量開發策略

專案中途新增資料表時,重新生成對應代碼並複製至專案即可。因命名空間、前綴固定,生成代碼自動符合專案慣例,避免衝突與冗餘。

三、生成代碼深度解析:實體類別範例

1. 基類與屬性

[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
}

2. 關鍵設計亮點

  • BaseEntity:統一實體基類,便於框架層面進行統一處理(如變更追蹤、複製、驗證)。
  • DataContract/DataMember:預留 WCF 序列化契約,未來服務化零修改。
  • 欄位註釋:直接來源於資料庫 Extended Properties,文檔與代碼同步。
  • 虛擬屬性:支援 NHibernate/EF 等 ORM 的延遲載入與攔截。
  • GUID 預設值:new Guid().ToString() 於建構子隱含執行,新實體即具備唯一識別碼。

總結

良好的資料庫規範是系統穩定演進的基石;代碼生成器將規範落地為標準化專案結構,消除重複勞動,確保團隊協作一致性。下一篇將深入剖析 DAL/BLL 代碼生成細節、介面契約設計,以及如何優雅地實作「富領域模型」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved