DB_Employees 實體類別 (核心片段)
[Serializable]
[BindTable("Employees")]
public class DB_Employees
{
public string FullName => LastName + FirstName; // 唯讀計算屬性
#region 資料庫欄位屬性
private int _employeeID;
[BindField("EmployeeID", Key = true)]
public int EmployeeID { get => _employeeID; set => _employeeID = value; }
private string _lastName;
[BindField("LastName")]
public string LastName { get => _lastName; set => _lastName = value; }
private string _firstName;
[BindField("FirstName")]
public string FirstName { get => _firstName; set => _firstName = value; }
// 其他欄位略...
#endregion
}
WinForm 測試介面

查詢並繫結列表
private void cmdRefresh_Click(object sender, EventArgs e)
{
using (MyORMFramework orm = CreateFramework())
RefreshList(orm);
}
private void RefreshList(MyORMFramework orm)
{
object[] objs = orm.ReadAllObjects(typeof(DB_Employees));
ArrayList list = new ArrayList(); list.AddRange(objs);
lstName.DataSource = list; lstName.DisplayMember = "FullName";
}
private MyORMFramework CreateFramework()
{
var conn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
Path.Combine(Application.StartupPath, "demomdb.mdb"));
conn.Open();
return new MyORMFramework(conn);
}
設計重點
- 實體類別僅含屬性與特性,邏輯極簡,極適合代碼生成器 (如 T4、CodeSmith) 批量產出。
EmployeeID 標記 Key=true,框架自動用於 UPDATE/DELETE 的 WHERE 條件。
FullName 為計算屬性,無 BindField 不會持久化。
- 測試程式展示框架從建立連線、查詢、繫結 UI 的完整最短路徑。