Entity Framework入门教程:什么是Entity Framework
Entity Framework简介
Entity Framework是微软提供的一个O/RM(对象关系映射)框架。它基于ADO.NET,为开发人员提供了一种自动化的机制来访问和存储数据库中的数据。
微软官方对Entity Framework的定义:
The Microsoft ADO.NET Entity Framework is an Object/Relational Mapping (ORM) framework that enables developers to work with relational data as domain-specific objects, eliminating the need for most of the data access plumbing code that developers usually need to write. Using the Entity Framework, developers issue queries using LINQ, then retrieve and manipulate data as strongly typed objects. The Entity Framework's ORM implementation provides services like change tracking, identity resolution, lazy loading, and query translation so that developers can focus on their application-specific business logic rather than the data access fundamentals.
实体框架在三种场景中很有用:
首先,如果您已经有了现有的数据库,或者希望在应用程序的其他部分之前设计数据库。
其次,您希望关注您的域类,然后从您的域类创建数据库。
第三,您希望在视觉设计器上设计数据库模式,然后创建数据库和类。
下图为以上三种场景的展示

【什么是O/RM】
ORM是一种用于将数据从域对象存储到关系数据库(如MS SQL Server)的工具。ORM包括三个主要部分:域类对象、关系数据库对象和映射到关系数据库对象的域对象(表、视图和存储过程)的映射信息。如下图

ORM使我们可以分开设计数据库和域类,使程序更易维护和扩展,并且它还可以自动化标准的CRUD操作(创建、读取、更新和删除),以便开发人员不需要手工编写。
Entity Framework的体系结构
下图显示了实体框架的总体架构:

- EDM (Entity Data Model): EDM 包含了三个重要组成部分-概念模型、映射和存储模型。
- Conceptual Model: 概念模型包含模型类及其关系。这将独立于您的数据库表设计。
- Storage Model: 存储模型是数据库设计模型,包括表、视图、存储过程以及它们的关系和键。
- Mapping: 映射包括关于如何将概念模型映射到存储模型的信息。
- LINQ to Entities:LINQ to Entities是用于针对对象模型编写查询的查询语言。它返回在概念模型中定义的实体。
- Entity SQL: Entity SQL 和 LINQ to Entities差不多,也是一种查询语言。
- Object Service:对象服务是访问数据库数据并将其返回的主要入口点。对象服务负责实现具体化,这是将从实体客户端数据提供者(下一层)返回的数据转换为实体对象结构的过程
- Entity Client Data Provider:这一层的主要职责是将L2E或实体SQL查询转换成由底层数据库理解的SQL查询。它与ADO.NET数据提供程序通信,从数据库中发送或检索数据。
- ADO.Net Data Provider:这一层使用标准ADO.Net与数据库进行通信。
Entity Framework的安装
可以通过NuGet包管理器搜索EntityFramework然后进行安装,或者通过程序包管理器控制台安装
Install-Package EntityFramework
原文:
http://www.entityframeworktutorial.net/what-is-entityframework.aspx
http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx
http://www.entityframeworktutorial.net/EntityFramework5/setup-entityframework-environment.aspx
Entity Framework入门教程:什么是Entity Framework的更多相关文章
- Entity Framework入门教程(1)---Entity Framework简介
什么是Entity Framework 学习EF的前提:熟练使用Linq和Ado.net,因为在使用EF框架进行开发时,我们大多数情况使用Linq进行查询和操作,而EF的底层实现用的是Ado.net. ...
- Entity Framework入门教程(2)---EF工作流程
EF工作流程 1.EF基本CRUD流程 下边的图就可以很清晰地展示EF的CRUD操作的基本工作流程: 这里做一个EF CRUD操作的简单总结:1.定义模型:这是EF工作的前提,定义模型包括定义领域类( ...
- Entity Framework入门教程(3)---EF中的上下文简介
1.DbContext(上下文类) 在DbFirst模式中,我们添加一个EDM(Entity Data Model)后会自动生成一个.edmx文件,这个文件中包含一个继承DbContext类的上下文实 ...
- Entity Framework入门教程(4)---EF中的实体关系
这一节将总结EF是怎么管理实体之间的关系.EF与数据库一样支持三种关系类型:①一对一 ,②一对多,③多对多. 下边是一个SchoolDB数据库的实体数据模型,图中包含所有的实体和各个实体间的关系.通过 ...
- Entity Framework入门教程(5)---EF中的持久化场景
EF中的持久性场景 使用EF实现实体持久化(保存)到数据库有两种情况:在线场景和离线场景. 1.在线场景 在线场景中,context是同一个上下文实例(从DbContext派生),检索和保存实体都通过 ...
- Entity Framework入门教程(6)--- 在线场景中保存数据
在线场景中保存数据 在线场景中保存实体数据是一项相当容易的任务,因为使用的是同一个context,这个context会自动跟踪所有实体发生的更改. 下图说明了在线场景中的CUD(创建,更新,删除)操作 ...
- Entity Framework入门教程(7)--- EF中的查询方法
这里主要介绍两种查询方法 Linq to entity(L2E)和Sql 1.L2E查询 L2E查询时可以使用linq query语法,或者lambda表达式,默认返回的类型是IQueryable,( ...
- Entity Framework入门教程(8)---预先加载、延迟加载、显示加载
1.预先加载 预先加载:在对一种类型的实体进行查询时,将相关的实体作为查询的一部分一起加载.预先加载可以使用Include()方法实现. 1.加载一个相关实体类型 栗子:使用Include()方法从数 ...
- Entity Framework入门教程(9)---离线场景附加实体图集到上下文
附加离线实体图集到上下文 这节主要内容是通过不同的方法将离线实体附加到上下文中. 在离线场景中,保存一个实体要略微困难一些.当我们保存一个离线的实体图集或一个单独的离线实体时,我们需要做两件事.首先, ...
- Entity Framework入门教程(10)---离线场景保存和删除实体/实体图集
离线场景保存和删除实体/实体图集 这一节的内容是在离线场景中保存实体和实体图集 在离线场景中,当我们保存一个离线的实体图集或一个单独的离线实体时,我们需要做两件事.首先,我们要把实体附加到新的上下文中 ...
随机推荐
- Docker - 在Windows7中安装Docker
安装docker 1 - Virtualization Support Check whether virtualization support is enabled at BIOS via HAV ...
- 如何使用RSYNC搭建备份服务器
1. RSYNC介绍 RSYNC是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows等多种操作系统平台. 远程数 ...
- 浏览器兼容性--new Date
ie浏览器下new Date("2013/04")与new Date("2016-04")会报错: //将201601格式的字符串转为Date对象,月份从0开始 ...
- html学习笔记 - meta link
<!DOCTYPE html> <html lang="en"> <head> <!-- 编码格式 --> <meta cha ...
- JSP中include指令和include动作区别
首先 <%@ include file=” ”%>:为指令元素 <jsp:include page=” ” flush=”true”/>:为 动作元素 先说指令元素: incl ...
- 开涛spring3(6.9) - 对JDBC的支持 之 7.1 概述
7.1 概述 7.1.1 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: //cn.javass.spring.chapter7. TraditionalJdbcTes ...
- Java IO流之缓冲流
一.缓冲流简介 二.BufferedInputStream 三.其他三种缓冲流
- Yii2中限制访问某控制器的IP(IP白名单)
有关Yii2.0鉴权之访问控制过滤器参考这篇文章 http://www.yiiframework.com/doc-2.0/guide-security-authorization.html 这里主要 ...
- 解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG
解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-6 ...
- javascript痛点之二作用域链
1.执行环境(执行上下文) 先看段代码 var a = 10; var b = 20; function cc(){ var c = 30; alert("b="+b); } cc ...