本篇主要介绍:EntityFramework简介, 实体框架架构图, EF版本

实体框架:

编写和管理数据访问的ADO.Net代码是一件单调乏味的工作。微软已经提供了一个名为“实体框架”的O / RM框架来为你的应用程序自动化数据库相关的活动。

Microsoft已经给出了Entity Framework的以下定义:(简称 EF)

实体框架是一个对象/关系映射(O / RM)框架。这是ADO.NET的一个增强,它为开发人员提供了访问和存储数据库数据的自动化机制。EF为现有数据库创建数据访问类,以便您可以直接使用这些类与数据库交互,而不是直接与ADO.Net交互。

实体框架在三种情况下是有用的。首先,如果你已经有了现有的数据库,或者你想在应用程序的其他部分之前设计你的数据库。其次,您要专注于您的域类,然后从您的域类创建数据库。第三,你想在可视化设计器上设计你的数据库模式,然后创建数据库和类。

ORM

ORM是一种将数据从域对象存储到关系数据库(如MS SQL Server)的工具,它以自动化的方式,不需要太多的编程。

O / RM包括三个主要部分:域类对象,关系数据库对象和有关域对象如何映射到关系数据库对象(表,视图和存储过程)的映射信息。ORM允许我们将我们的数据库设计与我们的域类设计分开。这使得应用程序可以维护和扩展。它还自动执行标准的CRUD操作(创建,读取,更新和删除),以便开发人员不需要手动编写。

典型的ORM工具为您的应用程序生成数据库交互的类,如下所示。

市场上有很多.net的ORM框架,如DataObjects.Net,NHibernate,OpenAccess,SubSonic等。实体框架是微软的一个开源的ORM框架。

实体框架的架构图:

EDM(实体数据模型):   EDM由三个主要部分组成 - 概念模型,映射和存储模型。

概念模型(Conceptual Model):  概念模型包含模型类及其关系。这将独立于您的数据库表设计。

存储模型(Storage Model):存储模型是数据库设计模型,包括表,视图,存储过程及其关系和密钥。

映射(Mapping):映射由有关概念模型如何映射到存储模型的信息组成。

LINQ to Entities: LINQ to Entities是一种用于针对对象模型编写查询的查询语言。它返回在概念模型中定义的实体。你可以在这里使用你的LINQ技能。

实体SQL:实体SQL是另一种查询语言,就像LINQ to Entities一样。然而,这比L2E稍微难一些,开发者需要单独学习。

对象服务:对象服务是访问数据库中的数据并将其返回的主要入口点。对象服务负责实现,这是将从实体客户端数据提供者(下一层)返回的数据转换为实体对象结构的过程。

实体客户端数据提供者:此层的主要职责是将L2E或实体SQL查询转换为底层数据库可以理解的SQL查询。它与ADO.Net数据提供者通信,而ADO.Net数据提供者又从数据库发送或检索数据。

ADO.Net数据提供程序:该层使用标准的ADO.Net与数据库进行通信。

EF版本:

现在最高的版本是EF6,我们的例子都是EF6的。

准备好数据库:

在上图中可以看到,为了演示目的,示例中的SchoolDB数据库包含具有以下关系的表格。

  • 一对一:学生和学生地址有一对一的关系,例如。学生有零个或一个StudentAddress。
  • 一对多:标准和教师有一对多的关系,例如。许多教师可以与一个标准联系起来。
  • 多对多:学生和课程使用StudentCourse表格,其中StudentCourse表格包含StudentId和CourseId,具有多对多的关系。所以一个学生可以参加很多课程,一个课程也可以有很多学生。

SQL下载:  SQL生成语句.zip

Entity Framework 一的更多相关文章

  1. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  2. Entity Framework Core 1.1 升级通告

    原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...

  3. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

    将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...

  4. 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)

    前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...

  5. 来,给Entity Framework热热身

    先来看一下Entity Framework缓慢的初始化速度给我们更新程序带来的一种痛苦. 我们手动更新程序时通常的操作步骤如下: 1)把Web服务器从负载均衡中摘下来 2)更新程序 3)预热(发出一个 ...

  6. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  7. Entity Framework教程(第二版)

    源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...

  8. Entity Framework 6 Recipes 2nd Edition 译 -> 目录 -持续更新

    因为看了<Entity Framework 6 Recipes 2nd Edition>这本书前面8章的翻译,感谢china_fucan. 从第九章开始,我是边看边译的,没有通读,加之英语 ...

  9. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

  10. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之目录导航

    ASP.NET MVC with Entity Framework and CSS是2016年出版的一本比较新的.关于ASP.NET MVC.EF以及CSS技术的图书,我将尝试着翻译本书以供日后查阅. ...

随机推荐

  1. Hadoop Yarn REST API未授权漏洞利用挖矿分析

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 一.背景情况 5月5日腾讯云安全曾针对攻击者利用Hadoop Yarn资源管理系统REST API未授权漏洞对服务器进行攻击,攻击者可以在未 ...

  2. VHDL

    数字逻辑VHDL 信号与变量 signal是全局的,在整个结构体中都有效,它的赋值是在进程结束, 也就是最后的赋值是有效的. variable是局部的,它的赋值是立即生效的. 一般变量是在进程的说明部 ...

  3. js中防止事件传播的方法

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. 深入理解JavaScript系列(16):闭包(Closures)

    介绍 本章我们将介绍在JavaScript里大家经常来讨论的话题 —— 闭包(closure).闭包其实大家都已经谈烂了.尽管如此,这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭 ...

  5. 移动H5页面,Android手机下,input获取焦点弹出系统虚拟键盘时,挡住input解决方法

    最近在写移动端页面的时候,遇到一个问题,在Android手机下,虚拟键盘会将input框遮挡住,具体情况如下图所示: 正常页面显示  IOS端显示情况 Android端显示情况 解决方式: <t ...

  6. 对SNMP4J的一些封装

    SNMP4J是一个开源的,用Java实现的snmp协议.其中提供了一下API,在这些API上面封装了一些方法,比如SNMP的get-request请求,get-next-request请求等 如果不了 ...

  7. java中try-catch-finally中的return语句

    在try-catch-finally语句中使用return语句遇到了一些疑问 代码一: static int intc(){ int x =0; try{ x=1; return x; }finall ...

  8. vue+rest-framework前后端分离整合

    一.vue部分 二.django路由配置 (1)项目urls.py修改如下: from django.conf.urls import url, include urlpatterns = [ # p ...

  9. ARM-IoT

    http://tech.hqew.com/fangan_723798 物联网就是一个物品互联网,这里的物品(物)内部有电子系统,具有感知和上报功能,支持远程控制,有时还能做出简单的决策.与物联网相关的 ...

  10. .NET开源工作流RoadFlow-表单设计-复选按钮组

    复选按钮组的设置与单选按钮组的设置相同,只是表现形式为:<input type="checkbox"/>