C# 發現之旅第十二講:基於反射與動態編譯的快速 ORM 框架(下)─ 更新命令生成詳解
前言 在快速 ORM 框架中,FillUpdateCommand 方法負責為資料庫更新操作建立 SQL 命令與參數。本文將深入解析代碼生成器如何透過反射動態產生
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(下)第8部分
FillUpdateCommand 代碼生成完整邏輯 生成器輸出覆寫方法簽名 → 參數檢查 → 若無鍵屬性輸出拋異常碼 → 否則: 遍歷所有可讀綁定屬性拼裝
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(下)第9部分
動態編譯核心 BuildHelpers 實作 掃描註冊表中 Value 為 null 的類型 → 收集待編譯清單 → 生成唯一命名空間 Temp{GUID} →
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(下)第10部分
查詢資料 ReadObjects 核心查詢方法完全避開反射,執行速度等同手寫 ADO.NET 代碼: public ArrayList ReadObjects(
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(下)第11部分
新增/刪除/更新核心操作實作 框架對外暴露簡潔 API,內部統一透過 GetHelper 取得輔助器,再委派具體命令構建: InsertObject 0 ?
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(下)第12部分
WinForm 測試程式完整代碼 示範程式涵蓋連線建立、資料重讀、新增/刪除/修改記錄、列表選取同步顯示細節等完整 CRUD 操作: 0) RefreshLi
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(上)第1部分
動態編譯技術核心概念 動態編譯:應用程式運行時自動生成 C# 代碼 → 呼叫 .NET 框架提供的 CSharpCodeProvider 編譯為暫時組件 → 載
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(上)第2部分
動態編譯技術優勢與適用場景 動態編譯在運行期自動生成 C# 代碼 → 呼叫 CSharpCodeProvider 編譯 → 載入組件 → 反射調用。產出的暫時組
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(上)第3部分
快速ORM框架整體架構 框架包含四大模組協同運作: 實體類型註冊列表:儲存 Type → RecordORMHelper 映射,應用啟動時批次註冊,不立即編
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(上)第4部分
RecordORMHelper 核心抽象契約 框架基石 RecordORMHelper 定義實體與資料庫映射的標準介面: 唯讀屬性:TableName(對應資
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(上)第5部分
RecordORMHelper 基礎類別補充 基礎抽象類別 RecordORMHelper 除核心抽象成員外,還提供多個受保護工具方法供動態生成的衍生類別呼叫:
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(下)第7部分
更新命令生成邏輯 FillUpdateCommand 代碼生成過程中,KeyProperties、KeyParameterNames、myWhereSQL 均在
C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(上)第6部分
實體類型註冊與驗證機制 在快速ORM框架中,實體類型的註冊過程相當簡潔。系統會將實體對象類型添加至鍵值列表,並同步呼叫 GetBindProperties 函數
快速 ORM 框架動態生成程式碼:InnerReadRecord 方法自動產生與型別轉換邏輯 (第 12 講上第 8 部分)
動態生成 InnerReadRecord 程式碼片段 writer.WriteLine(// 從資料讀取器讀取資料建立物件); writer.WriteLin
快速 ORM 框架反射分析:GetBindProperties 取得可繫結屬性與型別檢查 (第 12 講上第 9 部分)
InnerReadRecord 動態生成邏輯 (前置說明) 自動產生的 InnerReadRecord 利用 FieldIndexs 映射表 (陣列索引 → r
快速 ORM 框架動態編譯:實體屬性驗證與插入命令生成邏輯 (第 12 講上第 10 部分)
GetBindProperties 驗證實體類別規範 快速 ORM 要求實體類別必須: 為 class、public、非 abstract。 擁有公用無參數建
ORM 框架核心讀寫實作:InnerReadValues 資料映射與 InsertObjects 批次新增機制 (第 11 講下第 1 部分)
InnerReadValues 逐欄位填充實體 private int InnerReadValues(object obj, TableBindInfo i
ORM 框架新增邏輯:參數化 INSERT 語句建構與效能優化策略 (第 11 講下第 2 部分)
InsertObjects 核心實作 0) { cols.Append(, ); vals.Append(, ); } col