2011年8月17日
摘要: 今天装好了VS2008 Beta2,就迫不及待地试用一下Linq中的ORM功能,在初步尝试后,发现Linq中的ORM还是非常不错的,通过反射查看System.Data.Linq.dll发现,Linq中的ORM是使用反射完成了OR的映射工作,基于此,我开始有点怀疑Linq中的ORM的性能问题。为了进一步研究问题,我写了一个简单的测试,在事务中,使用DataRabbit 3.0和 Linq to sql 以ORM的方式分别向数据库的Customer表中插入1000条数据,来看各自所需的时间。首先,Customer结构如下:测试的代码如下:(1)使用Linq ORM:DataClasses1Data 阅读全文
posted @ 2011-08-17 11:44 上校 阅读(253) 评论(0) 推荐(0)
摘要: 在上一篇文章《把Sql数据转换为业务数据的几种方法》中提到了ORM系统把Sql数据转换为业务数据的几种方法,但这些方法都不是最佳的方法,后有白菜园等朋友提出用DynamicMethod,发现该方法确实是一个理想的解决方案:1、在设计的时候业务实体类的定义非常简洁;2、在运行的时候效率比较高,在某些情况下,甚至与硬编码的效率相等。3、解偶了数据转换类和业务实体类之间的关系,可以对任意的业务实体类进行转换而不用对他们进行修改。经过简单测试,发现用DynamicMethod的时间大约是硬编码的1~1.2倍,而用反射所花的时间大约是硬编码和DynamicMethod的4~6.5倍。现与大家分享代码,期 阅读全文
posted @ 2011-08-17 10:58 上校 阅读(348) 评论(0) 推荐(0)
摘要: ORM系统必须把数据库中的数据转换为业务数据,转换的方法大致有3种,本文就试图对它们做一些简单分析。1、属性反射。就是通过反射,获取业务实体类的各个属性,然后再设置这些属性的值。这个方法最简单、最稳定、通用性最强、可维护性最强、性能最差。例如NHibernate就是用这种方法实现的,它通过IGetter和ISetter接口实现对某个业务实体类属性的读取和写入。DongLiORM的早期版本也是用的这种方法,他通过BusinessObject的属性索引器实现。其原理就是首先通过获取某个业务实体类某个属性的PropertyInfo,然后调用该PropertyInfo的GetValue或者SetVal 阅读全文
posted @ 2011-08-17 10:57 上校 阅读(305) 评论(0) 推荐(0)