在動手寫代碼前,必須建立正確的 ORM 理論認知。本文系統梳理 ORM 產生背景、核心映射模式 (繼承/組合)、對象生命週期、事務處理、映射規則定義方式。
系統中大量業務對象需持久化到關係數據庫。Insert/Update/Delete 操作流程高度相似,僅 SQL 結構隨對象變化。ORM 旨在自動化相同流程,讓開發者專注差異化業務邏輯。
Java 生態 (Hibernate 等) 成熟;.NET 起步較晚,開源框架常因項目特殊性難以直接套用,自研輕量 ORM 更靈活可控。
| 模式 | 描述 | 優點 | 缺點 |
|---|---|---|---|
| ONE_INHERITANCE_TREE_ONE_TABLE (單表) | 整個繼承樹映射一張表,所有屬性並集為列 | 簡單、查詢快 | 嚴重數據冗余 (子類無屬性列存 NULL) |
| ONE_INHERITANCE_PATH_ONE_TABLE (多表) | 每條繼承路徑 (葉子類) 一張表,包含父類屬性 | 無冗余 | 查詢父類需聯表/Union,橫向繼承大時性能差 |
| ONE_CLASS_ONE_TABLE (規範化) | 每個類一張表,父子表通過 PK 關聯 | 冗余小、符合範式 | SQL 構造複雜、連接多、效率低 |

MiniORM 採用 單表模式 (簡單優先),適合繼承深度淺、屬性差異小的場景。
對象包含其他對象 (如 Person 包含 Hand、Head),ORM 需支援級聯持久化。關鍵點:外鍵關係、級聯保存/刪除/讀取順序。
Insert。Update。ORM 應識別狀態並自動選擇 SQL 操作。
System.Transactions.TransactionScope (COM+,優雅但重);SqlTransaction (ADO.NET,輕量,需手動傳遞)。SqlTransaction,參數傳遞實現嵌套控制。本文為系列理論基石,下篇進入反射與 Attribute 實戰應用。