1.Entity Framework介绍

下图显示EF整体架构。现在我们来看看架构的各个组件:

EDM(Entity Data Model): EDM由三个主要部分组成:概念模型,映射和存储模型。
映射(Mapping):映射由概念模型映射到存储模型的信息组成。
概念模型(Conceptual Model):概念模型包含模型类及其关系。这将独立于您的数据库表设计。

存储模型(Storage Model):存储模型是数据库设计模型,包括表,视图,存储过程及其关系和关键字。
LINQ to Entities:LINQ to Entities是用于针对对象模型编写查询的查询语言。它返回在概念模型中定义的实体。你可以在这里使用你的LINQ技巧。
实体SQL(Entity SQL):实体SQL是另一种查询语言,就像LINQ to Entities一样。但是,它比L2E有点困难,开发人员将不得不单独学习它。
对象服务(Object Service):对象服务是从数据库访问数据并将其返回的主要入口点。对象服务负责实现,这是将从实体客户机数据提供者(下一层)返回的数据转换为实体对象结构的过程。
实体客户端数据提供者(Entity Client Data Provider):此层的主要职责是将L2E或实体SQL查询转换为基础数据库所理解的SQL查询。它与ADO.Net数据提供商进行通信,ADO.Net数据提供者又从数据库发送或检索数据。
ADO.Net数据提供者(ADO.Net Data Provider):此层使用标准ADO.Net与数据库通信。

2.DbContext是负责与数据作为对象进行交互的主要类

EntitySet: DbContext包含映射到DB表的所有实体的实体集(DbSet <TEntity>)。
查询: DbContext将LINQ到实体查询转换为SQL查询并将其发送到数据库。
更改跟踪:它跟踪实体在数据库中进行查询后发生的更改。
持久化数据:它还根据实体的状态执行对数据库的“插入”,“更新”和“删除”操作。
缓存:默认情况下,DbContext执行一级缓存。它存储在上下文类的生命​​周期中已被检索的实体。
管理关系: DbContext还使用DB-First或Model-First方法中的CSDL,MSL和SSDL管理关系,或者在Code-First方法中使用流畅的API。
对象实现: DbContext将原始表数据转换为实体对象。

连接方案:这是从数据库检索实体时,持久性在相同的上下文中使用。上下文对象不会在实体检索和实体的持久性之间破坏。

断开连接的场景:断开连接的场景是从数据库检索实体,并且使用上下文中的不同对象提交已更改的实体。以下示例说明断开连接的场景:

3.实体生命周期

在开展CRUD操作(创建,读取,更新,删除)之前,了解实体生命周期以及由EntityFramework进行管理非常重要。
在实体的生命周期中,每个实体都具有基于通过上下文(DbContext)对其执行的操作的实体状态。实体状态是包含以下值的System.Data.Entity.EntityState类型的枚举:
Added,Deleted,Modified,Unchanged,Detached
上下文不仅保存对从数据库检索的所有对象的引用,而且它保存实体状态并维护对实体的属性所做的修改。此功能称为更改跟踪。
实体状态从“未更改”到“修改”状态的更改是上下文自动处理的唯一状态。必须使用DbContext和DbSet的正确方法明确地进行所有其他更改。
下图说明了对实体执行的操作如何更改其状态,从而影响数据库操作。

Entity Framework介绍的更多相关文章

  1. 8天掌握EF的Code First开发之Entity Framework介绍

    返回<8天掌握EF的Code First开发>总目录 本篇目录 Entity Framework概要 什么是ORM Entity Framework简史 Entity Framework具 ...

  2. 转载 8天掌握EF的Code First开发之Entity Framework介绍

    转载原地址:  http://www.cnblogs.com/farb/p/IntroductionToEF.html Entity Framework概要 Entity Framework是微软的O ...

  3. ORM,Entity Framework介绍以及其所包含的基础架构介绍

    一:entity framework 6.0 ORM (实体关系模型) O: Domain Object 领域模型 R: Relational Database 关系型数据库 M: Mapping 映 ...

  4. Entity Framework介绍和DBFirst开发方式

    一.ORM概念  什么是ORM? 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术.简单来说,就是将关系型数 ...

  5. 第一篇:Entity Framework 简介

    先从ORM说起吧,很多年前,由于.NET的开源组件不像现在这样发达,更别说一个开源的ORM框架,出于项目需要,以及当时OOP兴起(总不至于,在项目里面全是SQL语句),就自己开始写ORM框架.要开发O ...

  6. Programming Entity Framework 翻译(1)-目录

    1. Introducing the ADO.NET Entity Framework ado.net entity framework 介绍 1 The Entity Relationship Mo ...

  7. Entity Framework 实体框架的形成之旅--几种数据库操作的代码介绍(9)

    本篇主要对常规数据操作的处理和实体框架的处理代码进行对比,以便更容易学习理解实体框架里面,对各种数据库处理技巧,本篇介绍几种数据库操作的代码,包括写入中间表操作.联合中间表获取对象集合.递归操作.设置 ...

  8. MVC2、MVC3、MVC4、MVC5之间的区别 以及Entity Framework 6 Code First using MVC 5官方介绍教程

    现在MVC的技术日趋成熟,面对着不同版本的MVC大家不免有所迷惑 -- 它们之间有什么不同呢?下面我把我搜集的信息汇总一下,以便大家能更好的认识不同版本MVC的功能,也便于自己查阅. View Eng ...

  9. Entity Framework 6.1-Database First介绍

    原文:Entity Framework 6.1-Database First介绍 这种方式是比较传统的以数据库为核心的开发模式.比较适合有数据库DBA的团队.或者数据库已存在的情况. 优缺点: 1.优 ...

随机推荐

  1. python性能分析之line_profiler模块

    line_profiler使用装饰器(@profile)标记需要调试的函数.用kernprof.py脚本运行代码,被选函数每一行花费的cpu时间以及其他信息就会被记录下来. 安装 pip3 insta ...

  2. vsftp、ftps 搭建

    今天公司某个产品预上线,该产品需要向政府某部门提供一些数据. 该部门提交数据需要使用ftps,苦逼的我只能是测试环境搭建一套,用来测试提交数据. 先自行科普下ftps. 一.搭建vsftp 安装vsf ...

  3. python3+selenium入门08-鼠标事件

    使用click()可以模拟鼠标的左键点击事件,现在的web页面中有很多其他的鼠标交互方式,比如鼠标右击.双击.悬停.鼠标拖放等功能.在WebDriver中,将这些关于鼠标操作的方法封装在ActionC ...

  4. 【转】Java的接口和抽象类

    对于面向对象编程来说,抽象是它的一大特征.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有很多相似的地方,又有很多不同的地方. 一.抽象类 在了解抽象类之前,先来了解一下抽象方 ...

  5. mysql的group by查询

    下面是多种写法,针对使用group by后得到最新记录的测试及结果: 说明:我在测试的时候,因为我的表数据在增加,得到最新的数据可能不同 -- 1.得到每个分组中id最小的那条记录 select * ...

  6. [转]golang中defer的使用规则

    转载于:https://studygolang.com/articles/10167 在golang当中,defer代码块会在函数调用链表中增加一个函数调用.这个函数调用不是普通的函数调用,而是会在函 ...

  7. Day7--------------IP地址配置

    ifconfig 查看网卡 ifconfig eth0 查看网卡eth0 配置网络地址: 临时配置: ifconfig eth0 192.168.10.100 netmask 255.255.255. ...

  8. JNI 开发基础篇:Android开发中os文件的探索

    正题: android开发中,时长会遇到os文件的使用,那么os文件到底是什么?在这篇文章中会进行说明. .os文件在android中意味着C语言书写的方法,经android提供的ndk进行编译,从而 ...

  9. 原来商家登录系统的commonjs

    /* *适配 */ //orientationchange方向改变事件 (function (doc,win) { var docEl = doc.documentElement,//根元素html ...

  10. Modbus库开发笔记之十:利用协议栈开发Mosbus RTU Slave应用

    上一节我们使用协议占开发了一个Modbus TCP Server应用.接下来我们使用协议栈在开发一个基于串行链路的Mosbus RTU Slave应用. 根据前面对协议栈的封装,我们需要引用Modbu ...