实体框架EF(Entity Framework)简介
文章目录
- 实体框架EF(Entity Framework)简介
- 一、概述
- 二、O/R Mapping是什么
- 采用O/R Mapping带来哪些好处
- 三、Entity Framework架构
- 3.1 下图展示了Entity Framework的整体架构
- 3.2 Entity Framework架构详解
- EDM (Entity Data Model)
- LINQ to Entitis
- Entity SQL
- Object Service
- Entity Client Data Provider(实体客户端数据提供器)
- ADO.Net Data Provider
- 四、Entity Framework三种开发模式
- 4.1 Code First (代码优先)
- 4.2 Model First (模型优先)
- 4.3 Database First (数据库优先)
- 五、Entity Framework的优势和缺点
一、概述
Entity Framework
是微软官方提供的ORM工具,ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上。Entity Framwork
提供变更追踪,唯一性约束,惰性加载、查询事务等功能。开发人员使用Linq语言,对数据库操作如同操作Object对象一样省事。
Entity Framework
使用场景:
- 从数据库生成
Class
类。 - 由实体类生成数据库表结构。
- 通过数据库可视化器设计数据库,同时生成实体类。
二、O/R Mapping是什么
ORM-Object/Relational Mapper,即“对象-关系型数据映射组件”。对于O/R,即 Object(对象)和 Relational(关系型数据),表示必须同时使用面向对象和关系型数据进行开发。ORM是将数据存储从域对象自动映射到关系数据库的工具。ORM主要包含3个部分:域对象,关系数据库对象、映射关系。ORM使类提供自动化CRUD,使开发人员从数据库API和SQL中解放出来。
采用O/R Mapping带来哪些好处
-
在具体的操作数据库的时候,就不需要再去和复杂的
SQL语句
打交道,只要像操作对象一样,O/R Mapping工具会自动地将对象的操作转换为SQL语句操作。 -
提高学习和开发效率,极大的降低开发成本。
-
简化代码,减少BUG数量。
通过建立ORM框架,能够大量减少程序开发代码,开发数据层就比较简单,大大减少了出错机会。
-
简化测试。只需测试业务逻辑的类和行为,避免重复的JDBC测试
-
提高性能 对象级缓存( 缓存对象及其关系 )可以避免不必要的数据库存取,极大的提高数据读写的性能。我们也可以节省用于系统调优的时间和工作量。
-
隔离数据源,可以很方便的转换数据库 ORM可以将业务层与实际的数据存储隔开,开发人员不需要关心实际存储的方式,如果我们需要把SQL Server数据库换成ORACLE数据库,只需要修改配置文件就可,业务逻辑代码完全不需要修改。
三、Entity Framework架构
3.1 下图展示了Entity Framework的整体架构
3.2 Entity Framework架构详解
-
EDM (Entity Data Model)
EDM
包含三个主要部分:概念模型、映射和存储模型- 概念模型
概念模型包含模型类和它们之间的关系。这个将独立于你的数据库表设计
- 存储模型
存储模型是数据库设计模型,它包括表、视图、存储过程和它们的关系及键
- 映射
映射由关于概念模型是怎样和存储模型映射的的信息组成
-
LINQ to Entitis
LINQ-to-Entities (L2E)是一个写对象模型查询的一个查询语言。它返回实体,这些实体被定义在概念模型中。你可以在这里使用 LINQ 技能。
Entity SQL是另外一种类似于 LINQ to Entity 的查询语言。然而,它是一种比 L2E 难得多了并且开发者还要单独学习它
对象服务是一个访问数据库数据并且返回数据的主要入口点。对象服务负责具体化,这是一个将从实体客户端数据提供器(下一层)返回的数据转换成对象结构的一个过程。
这一层的主要职责是把 LINQ-to-Entities 或者 Entity SQL 查询转换成能被底层数据库理解的 SQL 查询。它和 ADO.Net 数据提供器通信,数据提供器依次地发送数据到数据库或者从数据库中检索数据。
这一层使用标准的 ADO.Net 和数据库通信
四、Entity Framework三种开发模式
Entity Framework支持3种开发方式,分别是:Code First
、Model First
及Database First
4.1 Code First (代码优先)
Code First
模式是一种很cool的模式,手动创建POCO
(全称Plain Old Class Objec
t,也是最基础的CLR Class
,实体类)。数据层DbContext
及映射关系,通过Database.SetInitializer
(本次采用dbcontext.Database.CreateIfNotExists
方法)生成数据库,自动生成方便快速、更易维护、非常灵活。
4.2 Model First (模型优先)
Model First
我们称之为“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,使用ModelFirst的前提是,应用程序还没有创建相应的数据库,咱们可以用Visual Studio通过设计系统相关的数据模型来生成数据库结构。当然和DataBase First
的区别也是显而易见,可以说是DataBaseFirst的逆向工程。
4.3 Database First (数据库优先)
简单、方便,但是当项目大了之后会非常痛苦。
五、Entity Framework的优势和缺点
优点:简单说就是Entity Framework省事,做业务系统,管理系统会减少很多代码,程序员可以更关注业务实现本身。
缺点:当处理大数据量和高并发时,由于Entity Framework是自动化程度高,所以在自定义优化这肯定一般,所以处理大数据量和高并发时,需要用最原始的访问数据库技术一点一点,一步一步的进行手动优化,保证每一步都在掌握之中,而不是依靠自动化。