C#发现之旅:使用反射和特性构造自己的ORM框架(上)
2010-09-30 21:08:53 来源:WEB开发网/// <summary>
/// 应用程序的主入口点。
/// </summary>
[System.STAThread]
static void Main()
{
Application.Run(new frmTestORM());
}
使用特性,我们可以在对象属性上附加数据库字段映射信息,使用反射,我们可以动态的读取和设置对象的属性值。这样特性和反射可以成为我们实行ORM的技术基础。
关于反射和特性的详细信息可以参考MSND中的相关文档。
ORM框架设计
我们首先来设计一个ORM框架。说到框架大家一定联想到.NET框架,J2EE框架。这些框架都是大公司劳苦数年才能完成,结构复杂功能强大。其实我们都可以根据各自需要自己开发一些通用的支持性质的软件,并美其名曰框架。现在我们就来设计一个轻量级的ORM框架,并应用我们今天要学习的反射和特性的.NET编程技术。
既然是轻量级的,我们就不考虑所有的情况,只考虑经常遇到的简单情况,复杂情况不予考虑。很多时候我们的编程对象和数据库表之间是存在简单的影射关系的,比如一个对象类型对应一个数据表,对象的一个属性对应数据表中的一个字段。此时我们可以定义两种特性,一个数据数据库表绑定特性,名为BindTableAttribute,用于将一个对象类型绑定到一个指定表名称的数据表上;还有一个数据库字段绑定特性,名为BindFieldAttribute,用于将一个对象属性绑定到一个指定名称的字段上面。
下图就是一个映射关系的例子,数据库中有个名为Employees的数据表,而开发者定义了DB_Employees类型。通过使用BindTableAttribute特性,将DB_Employess类型映射到数据表Employees,而是用BindFieldAttribute特性将DB_Employees的EmployeeID属性映射到数据库字段EmployeeID上面。类似的DB_Employees中的很多属性都映射到数据表Employees中的某个字段上,当然不是所有的对象类型的属性映射到数据库字段。通过在程序代码中,我们可以使用硬编码的方式将对象类型及其属性映射到数据库中的表和字段上面。
更多精彩
赞助商链接