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的更多相关文章

  1. Entity Framework入门教程(1)---Entity Framework简介

    什么是Entity Framework 学习EF的前提:熟练使用Linq和Ado.net,因为在使用EF框架进行开发时,我们大多数情况使用Linq进行查询和操作,而EF的底层实现用的是Ado.net. ...

  2. Entity Framework入门教程(2)---EF工作流程

    EF工作流程 1.EF基本CRUD流程 下边的图就可以很清晰地展示EF的CRUD操作的基本工作流程: 这里做一个EF CRUD操作的简单总结:1.定义模型:这是EF工作的前提,定义模型包括定义领域类( ...

  3. Entity Framework入门教程(3)---EF中的上下文简介

    1.DbContext(上下文类) 在DbFirst模式中,我们添加一个EDM(Entity Data Model)后会自动生成一个.edmx文件,这个文件中包含一个继承DbContext类的上下文实 ...

  4. Entity Framework入门教程(4)---EF中的实体关系

    这一节将总结EF是怎么管理实体之间的关系.EF与数据库一样支持三种关系类型:①一对一 ,②一对多,③多对多. 下边是一个SchoolDB数据库的实体数据模型,图中包含所有的实体和各个实体间的关系.通过 ...

  5. Entity Framework入门教程(5)---EF中的持久化场景

    EF中的持久性场景 使用EF实现实体持久化(保存)到数据库有两种情况:在线场景和离线场景. 1.在线场景 在线场景中,context是同一个上下文实例(从DbContext派生),检索和保存实体都通过 ...

  6. Entity Framework入门教程(6)--- 在线场景中保存数据

    在线场景中保存数据 在线场景中保存实体数据是一项相当容易的任务,因为使用的是同一个context,这个context会自动跟踪所有实体发生的更改. 下图说明了在线场景中的CUD(创建,更新,删除)操作 ...

  7. Entity Framework入门教程(7)--- EF中的查询方法

    这里主要介绍两种查询方法 Linq to entity(L2E)和Sql 1.L2E查询 L2E查询时可以使用linq query语法,或者lambda表达式,默认返回的类型是IQueryable,( ...

  8. Entity Framework入门教程(8)---预先加载、延迟加载、显示加载

    1.预先加载 预先加载:在对一种类型的实体进行查询时,将相关的实体作为查询的一部分一起加载.预先加载可以使用Include()方法实现. 1.加载一个相关实体类型 栗子:使用Include()方法从数 ...

  9. Entity Framework入门教程(9)---离线场景附加实体图集到上下文

    附加离线实体图集到上下文 这节主要内容是通过不同的方法将离线实体附加到上下文中. 在离线场景中,保存一个实体要略微困难一些.当我们保存一个离线的实体图集或一个单独的离线实体时,我们需要做两件事.首先, ...

  10. Entity Framework入门教程(10)---离线场景保存和删除实体/实体图集

    离线场景保存和删除实体/实体图集 这一节的内容是在离线场景中保存实体和实体图集 在离线场景中,当我们保存一个离线的实体图集或一个单独的离线实体时,我们需要做两件事.首先,我们要把实体附加到新的上下文中 ...

随机推荐

  1. scala 异常处理机制

    有经验的码农都知道,程序开发的差不多的时候,为了提高程序的稳健性,是一定要加上异常处理机制的 在scala中,用try/catch/finally实现该功能,这个在我的博客,数字转汉字小工具中有体现, ...

  2. 刚由pc端做移动端的感受

    最近新调到一个项目,由原来的pc端,调到移动端,一切都是那么的不一样,在得知即将调到移动端的时候,听说我们的技术要用到vue,Aladdin,还有es6,有点懵... 我做了以下准备工作: 1,买了本 ...

  3. OC—NSDictionary和NSMutabelDictionary 可变字典和不可变字典

  4. hdu3555 Bomb 数位DP入门

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 简单的数位DP入门题目 思路和hdu2089基本一样 直接贴代码了,代码里有详细的注释 代码: ...

  5. .NET面试题系列[16] - 多线程概念(1)

    .NET面试题系列目录 这篇文章主要是各个百科中的一些摘抄,简述了进程和线程的来源,为什么出现了进程和线程. 操作系统层面中进程和线程的实现 操作系统发展史 直到20世纪50年代中期,还没出现操作系统 ...

  6. j2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 分布式架构

    介绍 <modules>        <!-- jeesz 工具jar -->        <module>jeesz-utils</module> ...

  7. CSS动画效果的回调

    用纯JS实现动画效果代码量大,计算复杂.因此现在前端页面的动画效果一般都采用CSS来实现. CSS动画实现简单高效,但是在处理动画,控制动画过程上却缺少一些有效手段. 例如我们想在动画效果完成时调用回 ...

  8. Windows Server 2016中,安装PHP Manager,ARR3.0或者URL Rewrite 2.0无法成功的解决办法

    如图: 无法安装原因都是这几个工具无法识别10.0这个版本,可以修改注册表来先完成安装,然后再改回去 PHPManager的修改方法如下: 打开注册表工具(运行Regedt32),找到:HKEY_LO ...

  9. gulp环境搭建,gulp入门教程

    gulp常用地址: gulp官方网址:http://gulpjs.com gulp插件地址:http://gulpjs.com/plugins gulp 官方API:https://github.co ...

  10. 项目中的报错信息,maven报错等的总结

    Maven是一个自动化的构建和管理工具.在项目开发中,如果遇到了错误(红叉),一般有如下的解决方法: 1.java.lang.UnsatisfiedLinkError: E:\apache-tomca ...