Entity Framework 一
本篇主要介绍: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 一的更多相关文章
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- Entity Framework Core 1.1 升级通告
原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...
- Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- 来,给Entity Framework热热身
先来看一下Entity Framework缓慢的初始化速度给我们更新程序带来的一种痛苦. 我们手动更新程序时通常的操作步骤如下: 1)把Web服务器从负载均衡中摘下来 2)更新程序 3)预热(发出一个 ...
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- Entity Framework教程(第二版)
源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...
- Entity Framework 6 Recipes 2nd Edition 译 -> 目录 -持续更新
因为看了<Entity Framework 6 Recipes 2nd Edition>这本书前面8章的翻译,感谢china_fucan. 从第九章开始,我是边看边译的,没有通读,加之英语 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点
在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之目录导航
ASP.NET MVC with Entity Framework and CSS是2016年出版的一本比较新的.关于ASP.NET MVC.EF以及CSS技术的图书,我将尝试着翻译本书以供日后查阅. ...
随机推荐
- 腾讯毛华:智能交互,AI助力下的新生态
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲人:毛华 腾讯云语音云总经理 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在广 ...
- SQL 脚本整理 笔记
1.视图 存储过程 触发器 批量加密(With Encryption),单个解密 在运行过程中自己找不到启用DAC 的地方,链接的时候需要在服务器名称前面添加ADMIN:,如本机是ADMIN:WP-P ...
- Spring mvc框架下使用kaptcha生成验证码
1.下载jar包并导入. kaptcha-2.3.2.jar 2.spring 配置文件 applicationContext.xml. <bean id="captchaProduc ...
- OGNL,表达式上下文ContextMap
1.OGNL表达式 object graph navigation language:对象图导航语言 存取对象属性:调用对象方法:字段类型转换等. <input type="text& ...
- 06.do-while循环的练习
练习1: namespace _09.do_while循环练习01 { class Program { static void Main(string[] args) { //计算1到100之间的整数 ...
- 1.zookeeper的安装
1.解压zk压缩包 tar -zxvf (zk压缩包路径名) -C (解压目标目录路径) 2.在zk解压目录下新建data文件夹 mkdir data 3.在data文件夹下新建myid vi myi ...
- C++基础--字符串倒序输出
(一)用基本的数组实现 #include "stdafx.h" #include <stdio.h> #include <string.h> int mai ...
- 深度语义匹配模型-DSSM 及其变种
转自:http://ju.outofmemory.cn/entry/316660 感谢分享~ DSSM这篇paper发表在cikm2013,短小但是精炼,值得记录一下 ps:后来跟了几篇dssm的pa ...
- MySQL中AddDate函数的疑惑
无论使用哪一种RDBMS,都需要使用到其中的一些日期转换函数,在使用MySQL的AddDate函数时,遇到了点小问题,稍作记录. root@localhost:mysql3376.sock [(non ...
- log4go的日志滚动处理——生产环境的适配
日志处理有三类使用环境,开发环境DE,测试环境TE,生产环境PE. 前两类可以看成是一类,重要的是屏幕显示--termlog.生产环境中主要用的是socklog 和 filelog,即网络传输日志和文 ...