看过很多ORM的实体类方案,大多是用反射来读数据库数据,这样当频繁操作实体类的时候效率很低,我借鉴了一位朋友的思路,采用.NET 2.0的泛型技术,为实体类提供一个通用的查询和持久化方案。
先看看实体类定义:
代码
之后,便可以这样使用实体类:
1,查询:
代码
使用该方式,可以选取实体类指定的字段,而不是一次选取全部字段。这对于一个拥有大字段的表来说很有用。字段的选取都是通过实体类对象.属性 的方式,完全面向对象,用起来有点像LINQ,呵呵。
为啥说读取数据不需要反射?因为PDF.NET的实体类有内置的“属性名-属性值”字典,我们来看看具体是如何实现的:
代码
直接调用实体类的setProperty 方法即可。
保存数据也很简单,为指定的属性设置新值即可:
PFT_Report utlReport
=
new
PFT_Report();
utlReport.FundAccount = " 1234234242423 " ;
EntityQuery < PFT_Report > .Save(utlReport);
utlReport.FundAccount = " 1234234242423 " ;
EntityQuery < PFT_Report > .Save(utlReport);
你本次更新了多少个字段,框架只会生成要更新的字段的SQL语句,整个框架可以完全不使用反射来处理数据,保证了数据更新的效率。
整个实体类方案原理很简单,但实体类代码比较多,手写代码还是比较累人,所以框架提供一个代码生成器,从数据库表生成实体类或者将自己编写的SQL语句映射成实体类。
本文转自深蓝医生博客园博客,原文链接:http://www.cnblogs.com/bluedoctor/archive/2010/02/08/1665795.html,如需转载请自行联系原作者