目前主流的ORM框架有Entity Framework,Dapper,NHibernate,NBear,Castle ActiveRecord,BATIS.NET六种,都是免费开源的。下边从官方支持性,数据库支持性,开发周期,运行效率几方面进行对比。

1.1         官方支持性

Entity Framework,Dapper,NHibernate,Castle ActiveRecord,BATIS.NET五种都有官方支持,NBear已经停止更新,因此NBear不在使用之列。

1.2         数据库支持性

主流的ORACLE,MSSQL,MYSQL三种主流数据库官方提供对Entity Framework的支持,其余4种均为第三方公司提供的框架。

1.3         开发周期

Entity Framework不需要编写配置文件,不需要编写sql语句,有代码生成器,可直接使用原始项目的实体文件;

Dapper类似于Entity Framework  codefirst模式,但是需要在数据库访问层编写sql语句;

NHibernate需要编写配置文件,开发周期最长;

Castle ActiveRecord 基于NHibernate开发,改用Attribute来代替配置文件,没有本质的区别;

iBATIS.NET与NHibernate类似,需要编写配置文件。

1.4         运行效率

NHibernate系的效率的最低的,没有任何的疑问!

很多人毫无疑问的会认为Dapper的效率最高,其基于Emit开发,但是在实际的性能测试中Entity Framework效率最高(参看http://www.cnblogs.com/bluedoctor/p/3378683.html)。

通过综合的分析,Entity Framework最适合做数据库持久层。

ORM与ado.net对比

绝大多数人会认同网上广为传播的说法,因为铺天盖地的orm弊端已经广为深入人心。现在对其进行批驳:

1、orm大量使用反射,拖慢效率

如果现在还有人提这种说法,说明这种人是多么的out,或者这种人不能胜任技术,转行做了管理。泛型委托+反射+缓存的机制很早就已经解决了这个问题。

2、orm要先生成sql语句,这个过程慢

我觉得统一这种观点的人根本就没有在应用程序中写过sql。因为sql基本都是通过拼凑字符串,很多人都是通过+=来做的,而且根本就不会写优秀的sql语句,你写的sql语句在oracle性能测评工具中是顶级sql吗?高校的查询分页有几个人会写? orm都是有官方支持的,是会翻译成最顶级的sql去执行的!你在开发中不会用到实体?

3、懒

很多人停留在老技术,老风格的层面,学了c,认为优秀的开发语言都应该c风格的,对与语言化的linq总是持否定态度,net2.0 是多少年前的了?

4 眼高于头顶

应届毕业生普遍存在的现象,不多说了!

最新文章

  1. Java SE 基础:注释
  2. spring web MVC
  3. Javascript 优化项目代码技巧之语言基础(二)
  4. python中strip,lstrip,rstrip简介
  5. NHibernate系列文章十六:使用程序集管理NHibernate项目(附程序下载)
  6. [译] 你应该升级 MQTT3.1.1 的6个理由
  7. iOS之 PJSIP静态库编译(一)
  8. eclipse快捷键使用
  9. C# winFrom 制作、打包、签名、发布Activex全过程
  10. Msp430概述
  11. 利用QT开发一个记事本
  12. js 解析 bytearray 成 字符串
  13. check sql server edition (version 版本)
  14. Android 解决listview中checkBox错位选择
  15. Easy UI treegrid 分页实例
  16. Swift 简单介绍 - 苹果最新的编程语言
  17. @vue-cli3安装element组件过程
  18. 20秒教你如何写maven2的pom文件的依赖包
  19. vue中使用some删除list中的数据
  20. 记录python万恶的坑

热门文章

  1. 7 Must Read Python Books
  2. vi编辑器怎么设置tab缩进
  3. 使用 python 实现 memcached 的启动服务脚本 rc
  4. linux下 mysql数据库的备份和还原
  5. 关于linux中的时间 时区问题
  6. 添加文件到HDFS的集中缓存
  7. Java集合框架之map
  8. Hibernate内测总结
  9. 第3章 Linux常用命令(4)_帮助、用户管理和解压缩命令
  10. 第3章 Linux常用命令(1)_文件处理命令