首页 新闻 会员 周边 捐助

想请问一下Ado.net与Ado.net Entity Framework、NHibernate性能对比

0
[已关闭问题] 关闭于 2012-12-28 13:25

问题如上,不知道大家在大数据库的操作是如何做呢(ps:本人不怕写存储过程)

Mars楚洋的主页 Mars楚洋 | 初学一级 | 园豆:111
提问于:2012-09-11 00:03
< >
分享
所有回答(4)
0

只用过EF,性能可以接受,现在EF5据说性能更高

artwl | 园豆:16736 (专家六级) | 2012-09-11 08:06
0

Ado+存储过程,项目中这样性能不错,再加索引

jason2013 | 园豆:1998 (小虾三级) | 2012-09-11 08:52
0

Adp.net,你写错了吧,应该是ADO.Net吧!我来给你讲讲

1.ADO.NET 做为原装的直接跟数据库打交道,直接操作数据库。没有进行额外的封装。比如我们可以直接执行sql语句,直接调用存储过程。直接操作DataSet数据集等等数据。

 

2.EF 是 ORM 微软编程思想的付诸于实践,他对ADO.NET过行的封装,对数据表进行了映射处理。以对象的形式展现在开发人员面前。开发人员可以利用Linq语句的优势来执行增、改、查。但是最终的操作都是要转换成SQL语句来执行。

  比如:From a in Context.Student

          Where a.id =1

          Select a;

 真正执行的时候会转换成 SQL " Select * from Student Where id=1"

 所以说,EF让我们可以用面和对象的思想来编写程序,把注意力集中在系统中的业务环节。但是由于他要进行一次SQL语句的转换,所以相对于原始的ADO.NET来说,EF由于进行了封装,所以性能相对ADO.NET来说差一点点。不过EF也在不断的优化和改进中。 当然,EF也可以直接执行SQL语句和存储过程。有人会问,那为什么不直接执行SQL语句呢,回答是,直接执行的话要EF有什么用呢,EF就是在推行以面向对象编程的思想来处理业务。

 

3.NHibernate是把Java中用到的Hibernate移植到了.Net中, 所以你看到了名称前多了一个N,Hibernate是一个非常优秀的对象关系映射框架,NHibernate在移植的时候吸收了Hibernate 的优点。而且 EF是在Hibernate和NHibernate广泛使用后推出的,EF的聪明之处就是他吸收了前面两者的优点。并且还增加了一些自己的优点。所以说EF在性能方面应该不比前两者差。

 

当然,不管理是哪种方式,最终的目的还是为了解决问题,所以一定要根据实际情况来决定应该采取哪种方式。

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-09-11 11:11

ps:我想问的是性能的对比,如批量操作、大数据库的遍历速度

支持(0) 反对(0) Mars楚洋 | 园豆:111 (初学一级) | 2012-09-11 11:15

@wjta168: 

那当然是ADO.NET了

支持(0) 反对(0) jerry-Tom | 园豆:4077 (老鸟四级) | 2012-09-11 11:22
0

原生态的ADO.NET 性能肯定是最好

chenping2008 | 园豆:9836 (大侠五级) | 2012-09-11 13:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册