一、什么是EF?

  实体架构(Entity Framework)是微软以来ADO.Net为基础开发出来的对象关系映射(ORM)解决方案,它解决了对象持久化问题,将程序员从编写麻烦的SQL语句中解放出来。

优点:

      支持多种数据库(Microsoft SQL Server、Oracle和DB2等);

   强劲的映射引擎,能很好地支持存储过程;

      提供Visual Studio集成工具,进行可视化操作;

      能够与ASP.NET、WPF、WCF、WCF Data Services进行很好的集成。

二、ORM

常见ORM框架:

     ORM不是产品,是框架的总称,面向对象的程序设计语言到关系数据库的映射。

  使程序员既可以利用面向对象语言的简单易用性,又可以利用关系数据库的技术优势来实现应用程序的增删改查操作。

    1. NHibernate:Hibernate在.NET平台下的版本

    2. iBatis.NET:iBatis在.NET平台的实现

    3.Linq to SQL(微软不再更新):.NET针对SQL server的ORM框架

    4.ADO.NET Entity Framework:微软在.NET4.0推出的领域驱动开发模型。

注意:ADO.NET Entity Framework是微软以ADO.NET为基础所发展出来的对象关系映射解决方案,只不过是对ADO.NET进行了一个更高层次的封装。

    产生背景:

     1、重复的操作数据库代码

    我们使用三层架构时,使用的是ADO.NET访问数据库,我们将ADO.NET对数据库的操作封装在一个SQLHelper中,然后通过D层调用SQLHelper实现对数据库的操作。即使使用SQLHelper进行封装,我们的数据访问层(DAL),还是要针对不同的业务重复很多增、删、改、查操作。只是因为操作的表不同,我们就去重复这些增删改查操作,那么有没有什么工具可以自动生成这些语句?

    2、影响扩展性和灵活性

    数据访问层同时与域模型和关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,都要修改数据库访问层的相关程序代码,增加了软件的维护难度。

     定义:

    ORM全称:(Object-Relation Mapping)即对象-关系映射。ORM是将关系数据库中的业务数据用对象的形式表现出来,并通过面向对象的方式将这些对象组织起来,实现系统业务逻辑的过程。

    ORM解决的主要问题是对象关系映射。一般情况,实体与我们库中的表的对应关系,一个实体就好比表中的一行数据,将实体的操作视为对表的操作,通过ORM模型对我们的代码更加简洁,我们将对数据库的操作通过ORM转换后执行,ORM模型确实为我们的开发提高了效率。

  结构:

    

  通过该图,可以看出,

  O对应程序中的类Customer,就是对象,

   R含义为Relation,对应数据当中的关系表

   M表示程序中对象和数据库中关系表的映射关系(Mapping实际上是一个XML文件)

    当我们通过应用程序对数据库执行CRUD时,通过EF方式,实际上是对ObjectContext的操作,ObjectContext相当于EF的入口,ObjectContext拿到对应的消息(CRUD)后,通过ORM中的Mapping来将对象O映射成数据库中的关系R。我们通过一个截图来看下Mapping中存储的内容。

对象关系映射

   数据库中有用户表、工作表

  

第一步:系统向数据库中插入一条信息,这时内存中有User对象

第二步:对象和数据库怎样通信,即怎样将对象放到数据库

需要XML配置文件进行配置,保存映射关系

第三步:需要映射关系,使用Relation(映射到表中每个字段),最后可生成完整的SQL语句

Object:代表系统中对应的表

Table:代表数据库中的表,其中包含表中的各个字段

注意:ORM框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。

在系统中的体现:

SSDL:数据库(数据表)

CSDL:C#(类)

C-S:类和表的映射关系

————————————————
原文链接:https://blog.csdn.net/gxq741718618/article/details/41879617

EF-运行原理的更多相关文章

  1. iis6.0与asp.net的运行原理

    这几天上网翻阅了不少前辈们的关于iis和asp.net运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望前辈们不吝赐教 ...

  2. ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

    ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.Configure ...

  3. ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行

    ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行 核心框架 ASP.NET Core APP 创建与运行 总结 之前两篇文章简析.NET Core 以及与 .NET Framew ...

  4. 场景9 深入RAC运行原理

    场景9 深入RAC运行原理 OPS(Oracle Parallel Server)通过磁盘的节点判定数据是否最新   —>   Data Guard   —>    RAC(Real Ap ...

  5. Camel运行原理分析

    Camel运行原理分析 以一个简单的例子说明一下camel的运行原理,例子本身很简单,目的就是将一个目录下的文件搬运到另一个文件夹,处理器只是将文件(限于文本文件)的内容打印到控制台,首先代码如下: ...

  6. Web程序的运行原理及流程(一)

    自己做Web程序的开发也有两年多了 从最开始跟风学框架  到第一用上框架的欣喜若狂 我相信每个程序员都是这样过来的 在大学学习一门语言 学会后往往很想做一个实际的项目出来  我当时第一次做WEB项目看 ...

  7. Asp.net WebPages框架运行原理浅析(转)

    在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和符合Web标准,编写方式更接近于PHP和以前的Asp,和使用 WebFo ...

  8. ASP.NT运行原理和页面生命周期详解及其应用

    ASP.NT运行原理和页面生命周期详解及其应用 1. 下面是我画的一张关于asp.net运行原理和页面生命周期的一张详解图.如果你对具体不太了解,请参照博客园其他帖子.在这里我主要讲解它的实际应用.  ...

  9. jsp学习--JSP运行原理,九大隐式对象和JSP常用标签

    一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...

  10. Linux X Window System运行原理和启动过程

    本文主要说明X Window System的基本运行原理,其启动过程,及常见的跨网络运行X Window System. 一) 基本运行原理 X Window System采用C/S结构,但和我们常见 ...

随机推荐

  1. Tomcat(Linux)

    百度云:链接:http://pan.baidu.com/s/1o7MNTJc    密码:cfof 官方下载网址:http://archive.apache.org/dist/tomcat/tomca ...

  2. Could not launch "APP_NAME" process launch failed: 4294967295

    真机调试忽然遇到这个问题, Could not launch "APP_NAME" process launch failed: 如图所示: 模拟器上能正常调试………… 这个问题还 ...

  3. 在 Windows 上使用 Python 进行 web 开发

    本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上一篇我们介绍了在Windows 10下进行初学者入门开发Python的指 ...

  4. NYOJ 53 最少步数

    题      目    http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=58 思路借鉴   DFS-Deep First Search-深度优先 ...

  5. spring注解不支持静态变量注入

    spring注解不支持静态变量注入:今天敲代码  自动配置 配置: Animal.java package study01_autoconfig.beanConfig; import org.spri ...

  6. 如何在MySQL中输入中文

    解决MySQL中的Incorrect string value MySQL中输入中文:在MySQL建标的时候,直接往表中的varchar(255)中输入中文的话是会报错的,大概是因为数据库的默认编码是 ...

  7. AUTOSAR学习之RTE - 基本概念

    1.什么是RTE? The Run-Time Environment (RTE) is at the heart of the AUTOSAR ECU architecture. The RTE is ...

  8. Git命令备忘录

    目录 前言 基本内容 开始之前 基础内容 远程仓库 分支管理 前言 Git在平时的开发中经常使用,整理Git使用全面的梳理. 基本内容 开始之前 请自行准备好Git工具以及配置好Git的基本配置 基础 ...

  9. 第三章 Linux基本命令操作

    第三章  Linux基本命令操作 ¨  本节所讲内容: ¨  3.1  Linux终端介绍 Shell提示符 Bash Shell基本语法 ¨  3.2  基本命令的使用:ls.pwd.cd.hist ...

  10. IE浏览器主页被篡改为2345,针对一般解决办法无法解决的情况

    1.注册表修改 按微软键+R  输入regedit 弹出注册表.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN 将右侧的Sta ...