实体框架Entity Framework是ADO.NET中的一组支持开发面向数据的软件应用程序的技术。是微软的一个ORM框架。
ADO.NET Entity Framework是微软以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案,早期被称为ObjectSpace。
何为ORM框架?
广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。
狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向的接口,持久化一个OO对象应该不需要了解任何关系型数据库存储数据的实现细节。
ORM的出现是为了解决软件项目与数据库打交道的中间层。
ORM in EF
Entity Framework利用了抽象画数据结构的方式,将每个数据库对象都转换成应用程序对象(Entity),而数据字段都转换为属性(property),关系则转换为结合属性(association),让数据库的E/R模型完全的转成对象模型,如此让程序设计师能用最熟悉的编程语言来调用访问。而在抽象化的结构之下,则是高度集成与对应结构的概念层、对应层和存储层,以及支持Entity Framework的数据提供者(provider),让数据访问的工作得以顺利与完整的进行。
1)概念层:负责向上的对象与属性显露与访问
2)对应层:将上方的概念层和底下的存储层的数据结构对应在一起
3)存储层:依不同数据库与数据结构,而显露出实体的数据结构体,和provider一起,负责实际对数据库的访问和sql的产生
EF的优点
Entity Framework的最大优点就是非常方便的跨数据库平台。因为它不需要知道使用的是什么数据库,这也是.NET中Linq能to任何对象的原因。
EF为什么可以跨数据库平台?是因为它只需要修改一下config文件就可以了,只要指定链接字符串、驱动程序,就可以根据不同数据库生成不同的sql语句。当你的项目需要切换数据库的时候,就不需要修改sql语句了。
Entity Framework的本质还是ADO.NET操作,只是它将ADO.NET封装的更加高级了。
使用EF的感受
之前在做积分系统项目的时候就是EF框架,一开始不知道EF是个什么东西,只是知道EF是数据库的映射。在没有了解EF之前一直都是用的实体,每当数据库增加一个字段或者是一张表的时候,都要手动去往实体层写东西。而EF则不需要,只需要更新一下数据库的映射即可。这样减少了很多麻烦,也减少了很多人工的误操作。