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

C# 實作自製 ORM(四):反射與 Attribute 結合實現動態映射規則

     編輯:關於C語言

反射與 Attribute 的協同運作

前文已介紹反射動態取得型別資訊、自訂 Attribute 定義映射規則。現在將兩者結合:在執行期透過反射掃描實體類別屬性上的 Attribute,動態建構 O/R Mapping 規則,進而產生 SQL 指令。

實戰範例:動態讀取映射屬性

假設 Person 類別的 Name、Age、Sex 屬性均標註 [DataFieldAttribute]:

static void Main() {
    Person person = new Person { Name = "snoopy", Age = 5, Sex = "male" };
    PropertyInfo[] infos = person.GetType().GetProperties();
    foreach (PropertyInfo info in infos) {
        object[] attrs = info.GetCustomAttributes(typeof(DataFieldAttribute), false);
        if (attrs != null && attrs.Length > 0) {
            var attr = (DataFieldAttribute)attrs[0];
            Console.WriteLine($"{info.Name} -> 資料庫欄位:{attr.FieldName}");
        }
    }
}

執行結果輸出畫面

輸出顯示屬性名稱與對應資料庫欄位名稱的對應關係,證明動態映射規則提取可行。

本章總結與後續挑戰

本章示範反射+Attribute 實現動態映射規則發現。但要打造完整 ORM,尚待解決:

  1. 實體類別對應哪張資料表?
  2. 主鍵(PK)與外鍵(FK)如何表達?
  3. 複雜型別、集合屬性如何處理?
  4. 交易、並發、快取等進階特性?

這些議題將在後續章節逐一攻克。

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