实体框架EF(Entity Framework)简介

简介: 实体框架EF(Entity Framework)简介

一、概述

Entity Framework是微软官方提供的ORM工具,ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上。Entity Framwork提供变更追踪,唯一性约束,惰性加载、查询事务等功能。开发人员使用Linq语言,对数据库操作如同操作Object对象一样省事。


Entity Framework使用场景:


  1. 从数据库生成Class类。
  2. 由实体类生成数据库表结构。
  3. 通过数据库可视化器设计数据库,同时生成实体类。


二、O/R Mapping是什么

  1. ORM-Object/Relational Mapper,即“对象-关系型数据映射组件”。对于O/R,即 Object(对象)和 Relational(关系型数据),表示必须同时使用面向对象和关系型数据进行开发。ORM是将数据存储从域对象自动映射到关系数据库的工具。ORM主要包含3个部分:域对象,关系数据库对象、映射关系。ORM使类提供自动化CRUD,使开发人员从数据库API和SQL中解放出来。采用O/R Mapping带来哪些好处在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像操作对象一样,O/R Mapping工具会自动地将对象的操作转换为SQL语句操作。
  2. 提高学习和开发效率,极大的降低开发成本。
  3. 简化代码,减少BUG数量。

通过建立ORM框架,能够大量减少程序开发代码,开发数据层就比较简单,大大减少了出错机会。

  1. 简化测试。只需测试业务逻辑的类和行为,避免重复的JDBC测试
  2. 提高性能 对象级缓存( 缓存对象及其关系 )可以避免不必要的数据库存取,极大的提高数据读写的性能。我们也可以节省用于系统调优的时间和工作量。
  3. 隔离数据源,可以很方便的转换数据库 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

Entity SQL是另外一种类似于 LINQ to Entity 的查询语言。然而,它是一种比 L2E 难得多了并且开发者还要单独学习它

  • Object Service

对象服务是一个访问数据库数据并且返回数据的主要入口点。对象服务负责具体化,这是一个将从实体客户端数据提供器(下一层)返回的数据转换成对象结构的一个过程。

  • Entity Client Data Provider(实体客户端数据提供器)


这一层的主要职责是把 LINQ-to-Entities 或者 Entity SQL 查询转换成能被底层数据库理解的 SQL 查询。它和 ADO.Net 数据提供器通信,数据提供器依次地发送数据到数据库或者从数据库中检索数据。

  • ADO.Net Data Provider


这一层使用标准的 ADO.Net 和数据库通信


四、Entity Framework三种开发模式

Entity Framework支持3种开发方式,分别是:Code FirstModel FirstDatabase First

4.1 Code First (代码优先)

Code First模式是一种很cool的模式,手动创建POCO(全称Plain Old Class Object,也是最基础的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是自动化程度高,所以在自定义优化这肯定一般,所以处理大数据量和高并发时,需要用最原始的访问数据库技术一点一点,一步一步的进行手动优化,保证每一步都在掌握之中,而不是依靠自动化。

目录
相关文章
|
XML 存储 数据库连接
Entity Framework学习笔记——edmx文件
上文简单介绍了一下Entity FrameWork,这里说一下EF的核心——edmx文件。 在VisualStudio中建立edmx文件(此例环境为VisualStudio2012)
Entity Framework学习笔记——edmx文件
|
2月前
|
SQL 缓存 开发框架
Entity Framework Plus: 让 EF Core 开发如虎添翼
Entity Framework Plus: 让 EF Core 开发如虎添翼
|
4月前
|
SQL 开发框架 .NET
常用的 4 种 ORM 框架(EF Core,SqlSugar,FreeSql,Dapper)对比总结
常用的 4 种 ORM 框架(EF Core,SqlSugar,FreeSql,Dapper)对比总结
1427 0
|
6月前
|
SQL 关系型数据库 数据库连接
详解 Entity Framework(EF)核心组件与数据访问方法探索
Entity Framework是一个ORM框架,简化.NET开发者与数据库的交互。它始于.NET Framework的一部分,但现在可通过NuGet独立获取。ORM允许对象模型直接映射到数据库结构,避免直接编写SQL。
424 2
详解 Entity Framework(EF)核心组件与数据访问方法探索
|
6月前
|
开发框架 缓存 .NET
【Entity Framework】EF中DbSet类详解
【Entity Framework】EF中DbSet类详解
114 1
【Entity Framework】EF中DbSet类详解
|
6月前
|
开发框架 .NET 数据库
【Entity Framework】EF中SaveChanges如何使用
【Entity Framework】EF中SaveChanges如何使用
61 0
|
6月前
|
SQL 存储 开发框架
【Entity Framework】EF中的增删改查
【Entity Framework】EF中的增删改查
170 0
|
6月前
|
存储 SQL 开发框架
【Entity Framework】聊一聊EF中继承关系
【Entity Framework】聊一聊EF中继承关系
64 0
|
6月前
|
SQL 开发框架 .NET
【Entity Framework】聊一聊EF如何使用数据库函数
【Entity Framework】聊一聊EF如何使用数据库函数
99 0
|
6月前
|
存储 开发框架 安全
【Entity Framework】闲话EF中批量配置
【Entity Framework】闲话EF中批量配置
46 0