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)---离线场景保存和删除实体/实体图集
离线场景保存和删除实体/实体图集 这一节的内容是在离线场景中保存实体和实体图集 在离线场景中,当我们保存一个离线的实体图集或一个单独的离线实体时,我们需要做两件事.首先,我们要把实体附加到新的上下文中 ...
随机推荐
- JS中作用域
var scope = 'global'; var f = function() { console.log(scope); // 输出 undefined var scope = 'f'; } f( ...
- JS实现鼠标悬浮,显示内容
其实就是增加title属性
- 与redmine对接
redmine使用的版本为 2.3.01.打开rest web service2.jar依赖 <dependency> <groupId>com.taskadapter< ...
- 转:Centos6.5_x86安装Redis。
Redis是一个高性能的,开源key-value型数据库.是构建高性能,可扩展的Web应用的完美解决方案,可以内存存储亦可持久化存储.因为要使用跨进程,跨服务级别的数据缓存,在对比多个方案后,决定使用 ...
- jQuery手风琴制作
jQuery手风琴制作 说起手风琴,想必大家应该都知道吧,简单的来说就是可以来回收缩的这么一个东西,接下来,我就给大家演示一下用jQuery制作一个手风琴菜单! 写jQuery前,我们需要引用一个jQ ...
- MyBatis之级联——鉴别器
鉴别器(discriminator)是MyBatis为我们提供的第三个级联也是最后一个.基于之前两篇级联中的场景,现增加学生们去体检,但男女体检项目不一样,我们把男女体检表做成两张表,当然我想也可以设 ...
- 如何升级php版本---从php5.5.12 升级php7.1.5 wamp实践
1.从官网下载一个php7.1.5 2.将刚下载的压缩包解压缩,修改命名为php7.1.5,即php+版本号. 3.将这个文件夹放在wamp/bin/php 目录下. 4.将原来版本的php5.5.1 ...
- python之配置logging的几种方式
作为开发者,我们可以通过以下3中方式来配置logging: 1)使用Python代码显式的创建loggers, handlers和formatters并分别调用它们的配置函数: 2)创建一个日志配置文 ...
- 怎么在vue中使用less
最近使用vue2.0重构项目, 使用vue-cli脚手架构建, 采用webpack模板, 要在项目中使用less进行样式的编写 首先, 打开终端, 在当前项目目录下安装less npm install ...
- 《Android进阶》之第三篇 深入理解android的消息处理机制
Android 异步消息处理机制 让你深入理解 Looper.Handler.Message三者关系 android的消息处理机制(图+源码分析)——Looper,Handler,Message an ...