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

C#發現之旅第十二講:基於反射與動態編譯的快速ORM框架(下)第12部分

     編輯:關於C語言

WinForm 測試程式完整代碼

示範程式涵蓋連線建立、資料重讀、新增/刪除/修改記錄、列表選取同步顯示細節等完整 CRUD 操作:

private MyFastORMFramework CreateFramework() {
    var conn = new OleDbConnection(
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
        Path.Combine(Application.StartupPath, "demomdb.mdb"));
    conn.Open();
    return new MyFastORMFramework(conn);
}

// 重讀清單
private void RefreshList(MyFastORMFramework myWork) {
    var objs = myWork.ReadAllObjects(typeof(DB_Employees));
    var list = new ArrayList(); list.AddRange(objs);
    lstName.DataSource = list; lstName.DisplayMember = "FullName";
}

// 新增
private void cmdInsert_Click(...) {
    using (var dlg = new dlgRecord { Employe = new DB_Employees() })
        if (dlg.ShowDialog() == DialogResult.OK)
            using (var fw = CreateFramework())
                if (fw.InsertObject(dlg.Employe) > 0) RefreshList(fw);
}

// 刪除
private void cmdDelete_Click(...) {
    var obj = lstName.SelectedItem as DB_Employees;
    if (obj != null && MessageBox.Show(...) == DialogResult.Yes)
        using (var fw = CreateFramework()) { fw.DeleteObject(obj); RefreshList(fw); }
}

// 修改
private void cmdEdit_Click(...) {
    var obj = lstName.SelectedItem as DB_Employees;
    if (obj != null)
        using (var dlg = new dlgRecord { Employe = obj, txtID = { ReadOnly = true } })
            if (dlg.ShowDialog() == DialogResult.OK)
                using (var fw = CreateFramework())
                    if (fw.UpdateObject(obj) > 0) RefreshList(fw);
}

部署與小結

框架極輕量:僅需將 MyFastORMFramework.cs、BindTableAttribute、BindFieldAttribute 複製至專案,或編譯為 DLL 供 VB.NET 等其他 .NET 語言呼叫。本課結合反射與動態編譯,實現靈活高效的 ORM 框架,展現此技術組合的強大潛力。

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