2.1 Entity Framework简介
Entity Framework的全称为ADO.NET Entity Framework,简称为EF,我们一般很少用全称,而是直接用EF。
2.1.1 与ADO.NET的关系
Entity Framework(实体框架)是微软以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案,早期被称为ObjectSpace,目前最新版本是EF7(CodeOnly功能得到了更好的支持)。
Entity Framework是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。其他的一些基于.NET开发的ORM框架有Nibernate、PetaPoco等。
Entity Framework的特点:
● 支持多种数据库(MSSQL、Oracle、Mysql和DB2)。
● 强劲的映射引擎,能很好地支持存储过程。
● 提供Visual Studio集成工具,进行可视化操作。
● 能够与ASP.NET、WPF、WCF、WCFData Services进行很好的集成。
2.1.2 什么是O/R Mapping
广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。
狭义上,ORM可以被认为是基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化一个OO对象应该不需要了解任何关系型数据库存储数据的实现细节。EDM设计器如图2-1所示。
图2-1
在面向对象的世界里,我们使用单向关联,然而在关系数据库的世界里,我们使用外键作为双向关联。
面向对象有继承的概念。例如,车辆类有很多继承类,小汽车是一种车辆,大卡车也是一种车辆,这种都是继承关系。
在关系数据库世界里,没有继承的关系。
ORM是对象世界和关系世界的一座桥梁,通过映射关系,简化了大量操作数据库的代码。
2.1.3 ORM in EF
Entity Framework利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象(entity),而数据字段都转换为属性(property),关系则转换为结合属性(association),让数据库的E/R模型完全转成对象模型,如此让程序设计师能用最熟悉的编程语言来调用访问。在抽象化的结构之下,则是高度集成与对应结构的概念层、对应层和储存层,以及支持Entity Framework的数据提供者(provider),让数据访问的工作得以顺利、完整地进行。如图2-2所示。
● 概念层:负责向上的对象与属性显露与访问。
● 对应层:将上方的概念层和底下的储存层的数据结构对应在一起。
● 储存层:依不同数据库与数据结构而显露出实体的数据结构体,和Provider一起,负责实际对数据库的访问和SQL的产生。
图2-2
2.1.4 EF的优缺点
1. EF的优点
● 极大地提高开发效率。EF是微软自己的产品,跟VS开发工具集成度比较好,开发中代码都是强类型的,写代码效率非常高,自动化程序非常高,采用命令式的编程。
●EF提供的模型设计器非常强大,不仅仅带来了设计数据库的革命,其附带来的自动化生成模型代码的功能也极大地提高了开发和架构设计的效率。
●EF跨数据库支持是ORM框架的主要功能点之一,有着仅仅通过改变配置就可以做到跨数据库的能力,更换数据库非常方便。
2. EF的缺点
● EF性能不好,性能有损耗。(生成SQL脚本阶段)在复杂查询的时候生成的SQL脚本效率不是很高。
● 数据库端性能损耗是一样的,但是在将对象状态转换为SQL语句时会损失性能。