ADO.NET Entity Framework与ADO.NET的区别

来源:互联网 发布:2016禁毒网络知识竞赛 编辑:程序博客网 时间:2024/05/17 06:41

ADO.NET EF作为微软的一个ORM框架,通过实体、关系型数据库表之间的映射,使开发人员可以通过操作表实体而间接的操作数据库,大大的提高了开发效率。
这样一来,.NET平台下,我们与底层数据库的交互就有两种选择了(这句话说得不是很准确,微软.NET 框架下还是有其他的ORM框架的,,如Nhibernate):ADO.NET EF、ADO.NET 。


ADO.NET EF 、ADO.NET 两者怎么都带有一个ADO.NET呢?


先了解一下.NET的一些基本知识了
(1).NET: 最核心的基础平台(可以看做运行环境和巨多类库),仅次于操作系统
(2)ASP.NET: .NET平台下进行网站开发的框架
(3)ASP.NET MVC:ASP.NET 框架下开发网页的一种框架
(4)ADO.NET: .NET平台下访问数据库的框架,他提供了一些列的访问数据库的类库
(5)ADO.NET EF: ADO.NET框架下访问数据库的最新最强大的ORM
(6)ORM: 把数据库映射为实体类的技术
(7)NHibemate: .NET平台内访问数据库的一种可选ORM,从Java转换而来
以上仅仅是个人见解,不代表官方说法。
上面只是对ADO.NET 和ADO.NET EF两者进行了简单了解,下面我们再对两者进行一个具体的比较学习
(1)ADO.NET 做为原装的直接跟数据库打交道,直接操作数据库,没有进行额外的封装。比如我们可以直接执行sql语句,直接调用存储过程。直接操作DataSet数据集等等数据。
(2)EF 是ORM思想的付诸于实践,它对ADO.NET进行了封装,对数据表进行了映射处理,以对象的形式展现在开发人员面前。开发人员可以利用Linq语句的优势来执行增、改、查。但是最终的操作都是要转换成SQL语句来执行。


两者的区别:
1、采用EF进行开发只需要操作对象。使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想。ADO.NET以数据库为中心来开发数据访问层。
2、采用EF减少了数据处理工作,可以简化程序开发,从而达到快速开发的目的。采用ADO.NET开发需要程序员编写SQL语句并处理数据与对象的转换,开发效率低。
3、EF对内存消耗比较大,ADO.NET对内存消耗较小,EF性能不如ADO.NET。
4、EF处理数据库的方式是针对单个对象的。对数据库的增、删、改都是正对一条记录而言。ADO.NET既适合逐条处理数据也适合对于批量修改、删除数据进行处理。
5、EF不适用于数据库中有大量的存储过程、触发器的开发,此时采用ADO.NET比较适合。
6、EF只适合于表与表的关系比较明确的环境中。如本应该建立外键的,没有建立外键。这时使用EF不仅没有减少工作量,反而增加了工作量。ADO.NET对此没有硬性要求。


EF让我们可以用面向对象的思想来编写程序,把注意力集中在系统中的业务环节。但是由于他要进行一次SQL语句的转换,所以相对于原始的ADO.NET来说,EF由于进行了封装,所以性能相对ADO.NET来说差一点点。不过EF也在不断的优化和改进中。 当然,EF也可以直接执行SQL语句和存储过程。有人会问,那为什么不直接执行SQL语句呢,回答是,直接执行的话要EF有什么用呢,EF就是在推行以面向对象编程的思想来处理业务。
OK,上面对两者进行了简单的比较,既然微软对ADO.NET 进行封装推出EF,那说明EF相对于原始的ADO.NET还是有优势的呢,那具体有哪些呢?
EF相对于ADO.NET 的优点
(1)开发效率高,开发人员完全可以根据面向对象的思维进行软件的开发
(2)可以使用三种设计模式中的ModelFirst来设计数据库,而且比较直观
(3)可以跨数据库,只需要在配置文件中修改连接字符串
(4)与VS结合的比较好
缺点:性能上赶不上原生的ADO.NET (因为他中间还有一个生成sql脚本的过程)
上面的缺点也暴露了一个问题:ADO.NET EF替代ADO.NET 。

原创粉丝点击