C#发现之旅:使用反射和特性构造自己的ORM框架(上)
2010-09-30 21:08:53 来源:WEB开发网使用本功能,框架可以根据指定的SQL查询语句和对象类型查询数据库,并根据查询结果生成若干个对象,并设置刚刚创建的对象的属性值为字段值。在这个功能中,需要首先指定SQL查询语句和对象类型。
在这个功能中,框架程序首先获得对象类型的所有公开属性,获得其附加的BindFieldAttribute特性,获得这些属性绑定的数据库字段名。然后执行SQL查询,遍历所有查询的纪录,对每一个记录都创建一个数据对象,并根据字段和属性的映射关系将数据库字段值保存到对象的属性值中。如此就实现了查询数据库获得对象的功能。
这个功能中需要用户指定SQL查询语言,也可以根据对象类型绑定的数据表名称来自己拼凑SQL语句。
将对象插入到数据库
在本功能中,框架程序使用反射获得对象类型附加的BindTableAttribute特性,获得该对象映射的数据表名;然后遍历所有的公开实例属性,若属性附加了BindFieldAttribute特性,则获得该属性映射的字段名。然后收集所有的属性值和它们映射的字段名,使用字符串拼凑生成一个Insert的SQL语句。然后调用数据库连接对象执行这个SQL语句,以实现向数据库新增记录的功能。
根据对象修改数据库记录
在本功能中,框架程序使用指定的对象来修改数据库中的记录。此时对象类型中至少有一个属性附加了关键字段映射特性。框架程序使用反射获得对象类型附加的BindTableAttribute 特性,获得该对象映射的数据表名,然后遍历属性,获得对象属性和数据库字段之间的映射关系。然后收集属性值,使用字符串拼凑生成一个“Update 数据表名 Set 字段1=属性1的值 ,字段2=属性2的值 ”的SQL语句。然后还遍历属性,找到所有附加了关键字段特性的属性以及绑定的字段名,拼凑出“Where 关键字段1=属性1的值 and 关键字段2=属性2的值”,这样就能拼凑出一个完整的更新数据库用的Update的SQL语句,然后调用数据库连接对象执行这个SQL语句,就能实现更新数据库记录的功能。
更多精彩
赞助商链接