C#发现之旅:使用反射和特性构造自己的ORM框架(上)
2010-09-30 21:08:53 来源:WEB开发网在BindFieldAttribute中,首先我们使用AttributeUsage特性来描述了这个特性的应用范围,这里使用了System.AttributeTargets.Property来表明该特性只能用于对象类型的属性而不能用于其它任何地方。
这里定义了Name属性,就是其所依附的数据对象的属性映射的数据库字段的名称,若Name值为空则认为属性名就是映射的数据库字段名。若数据对象的属性没有附加BindFieldAttribute特性,则该属下没有映射到任何数据库字段上,框架程序会忽略这个成员属性的存在。
这里还定义了Key属性,用于表明所映射的字段是不是关键字段。框架程序在修改和删除数据库记录时需要获得查询条件,而对象类型中所有的附加了BindFieldAttribute特性且Key值为true的属性就可构造出查询条件,若对象类型中没有任何一个Key值为true的成员属性,则框架程序不能根据其来修改和删除数据库记录。
ReadFormat属性用于指明从数据库读取的原始数据设置到对象属性值时的解析格式。比如数据库中保存了类似“20080603”的格式为“yyyyMMdd”的日期数据,而对象属性的数据类型是DateTime类型。此时我们可以设置ReadFormat值为“yyyyMMdd”则框架程序从数据库获得原始数据后试图用“yyyyMMdd”的格式解析原始数据并获得一个DateTime值,然后设置到对象属性值。
WriteFormat属性类似ReadFormat属性,用于指明将数据对象的属性值按照指定的格式化生成一个字符串并保存到数据库中。
主框架模块 MyORMFramework类型
类型 MyORMFramework是本ORM框架的主要程序模块,它根据类型BindTableAttribute和BindFieldAttribute提供的信息将应用程序对象和数据库的表和字段进行绑定,然后向数据库查询,新增,修改和删除数据库记录。应用程序使用ORM框架也基本上就是创建一个MyORMFramework的实例,然后调用它的成员。
更多精彩
赞助商链接