Entity Framework是以ADO.NET为基础,面向数据的“实体框架”。以下简称EF。

它利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),数据字段都转换为属性 (property),关系则转换为结合属性 (association),让数据库的 E/R 模型完全的转成对象模型,如此让程序设计师能用最熟悉的编程语言来调用访问。

个人认为百科上对EF一句比较经典的解释为:让上层的应用程序码可以如面向对象的方式般访问数据。

过去我们对数据库都是直接读取,业务数据中都是使用DataSet、DataTable等来传值,造成代码丑陋,严重脱离了OO的思想。

举个例子,当向数据库中存储时,实体框架主要是用来帮助我们把一个个对象存储到数据库中去(即通过对象与数据库“打交道”),只要把对象交给实体框架,不用自己写SQL语句,它会帮助我们自动生成SQL语句,这里生成的SQL语句通过ADO.NET发送到数据库中去,即操作数据库还是通过ADO.NET,所以本文首句说到了“EF是以ADO.NET为基础,面向数据的‘实体框架’ ”。

具体过程可以用下图表示:

如上图,假如要把内存中的两个实体Student和Teacher存储到数据库中,EF会自动将实体通过EDM的映射,将一个实体作为一条记录存入到数据库中去,那EF是如何判断哪个实体应该存到哪张表里,哪个属性应该存到哪个字段里呢?这就是映射的强大所在:

在VisualStudio中,映射通过  .edmx 文件来体现,.edmx文件的本质是一个 XML 文件,它用于定义概念模型、存储模型和这些模型之间的映射。

比如在上例的映射中,可以通过类似于如下形式来体现:

<!-- CSDL 此处表示实体 -->
<Entity Name="Student"><Pro Name="StuName"><Pro Name="StuSex"><Pro Name="StuAge">
</Entity><!-- SSDL 此处表示数据库表 -->
<Table Name="Student"><Col Name="StuName"><Col Name="StuSex"><Col Name="StuAge">
</Table><!-- C-S 此处表示实体与数据库表的映射关系 -->
<Relation Entity="Student" Table="Student"><Rel ProName="StuName" ColName="StuName">  <!--实体中StuName属性对应表中StuName字段--><Col ProName="StuSex" ColName="StuSex">    <Col ProName="StuAge" ColName="StuAge">
</Relation>

上述代码并不是 .edmx文件中的确切格式,此处为了简单说明,读者可以看做是“伪代码”,后面将会简单介绍 .edmx 文件创建和基本格式。

通过上面可以了解到,从读代码的角度来说,EF可以使我们在不需要了解数据结构的情况下就可以很好地理解;从实现的角度来说,EF可以使存储“模型化”,就如同将很多个对象存储在一个List中似的,向数据库表里存储的都是一个个实例,从数据库中取到的也都是一个个实例。程序如此跟数据库的交互,和OO化的代码相互对应,容易“对接”。

Entity Framework学习笔记——EF简介(一篇文章告诉你什么是EF)相关推荐

  1. Entity Framework 学习笔记(1)

    开始从头系统地学习Entity Framework,当前的稳定版本为6.1.3,Nuget主页 http://www.nuget.org/packages/EntityFramework/ 微软喜欢把 ...

  2. entity framework学习笔记

    学习ef首先要介绍一些基本的概念. 1,概念模型: 就是讲世界上具体的事物抽象为某一种信息结构,这种结构并不依赖于某种计算机,不是某种数据库 支持的数据模型,而是一种概念性的模型.如下图 2,ef的实 ...

  3. ADO.NET Entity Framework学习笔记(2)建模[转]

    模型结构 [概念模型]中要有[实体键], [实体键]要与表中的 [主键] 对应,也就是说表必须要有主键. 表中的[唯一键]不会在[概念模型]中体现 在[概念模型]中默认是不允许修改[实体键]的值的 联 ...

  4. ADO.NET Entity Framework学习笔记(4)ObjectQuery对象

    ObjectQuery<T>数据加载方式 1. ObjectQuery<T> 提供了一个管理[实体对像]集合 2. ObjectQuery<T>继承System.D ...

  5. Programming Entity Framework-dbContext 学习笔记第五章

    ### Programming Entity Framework-dbContext 学习笔记 第五章 将图表添加到Context中的方式及容易出现的错误 方法 结果 警告 Add Root 图标中的 ...

  6. Entity Framework 学习中级篇1—EF支持复杂类型的实现

    本节,将介绍如何手动构造复杂类型(ComplexType)以及复杂类型的简单操作. 通常,复杂类型是指那些由几个简单的类型组合而成的类型.比如:一张Customer表,其中有FristName和Las ...

  7. Entity Framework 学习中级篇—EF支持复杂类型的实现

    http://www.cnblogs.com/xray2005/archive/2009/06/01/1493661.html 本节,将介绍如何手动构造复杂类型(ComplexType)以及复杂类型的 ...

  8. 系统架构师学习笔记_第六章(下)_连载

    系统架构师学习笔记_第六章(下)_连载 6.3 基于 UML 的软件开发过程 6.3.1  开发过程概述 UML 是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用.迭代的渐进式软件开发过程 ...

  9. Entity Framework 学习建议及自学资源

    Entity Framework 学习建议及教学PPT 金旭亮 =============================================== EntityFramework(EF)是 ...

最新文章

  1. 蚂蚁上市后,马云不是最大赢家,竟是她!
  2. hibernate多对多,转换为两个一对多
  3. 如何写 go 代码 (How to Write Go Code 翻译)
  4. Sublime text3装入插件Anaconda
  5. 《Servlet和JSP学习指南》一2.5 小结
  6. Matlab聚类分析/判别分析
  7. Windows 11企业版虚拟机镜像官方版下载及安装
  8. kali2020 中文乱码问题
  9. 内存颗粒和闪存颗粒的区别_闪存颗粒与内存颗粒的不同
  10. 【定制Android系统】Android O 修改吉字节为GB
  11. Java基础学习笔记:补充内容1 计算机字符编码
  12. 实时语音视频通话SDK如何实现立体声(二)
  13. 在同一个数据集中同时更新多表..............
  14. free看了《猎场》,自制力沦丧啊,写点国产剧猎场的台词感想吧
  15. inspects a maven model for resolution problems
  16. 爬取QQ音乐(周杰伦)
  17. 操作系统bootloader是什么
  18. 网易公共课Linux Shell脚本应用学习笔记
  19. vep加密视频破解转换为mp4教程
  20. 3D卷积神经网络详解

热门文章

  1. 关于ES6中let 和 const 命令的用法以及注意事项:
  2. 数组中相同id的其他属性进行拼接的方法
  3. 使用Calibre转换任意格式为支持KF8的mobi文件
  4. Python爬虫实战使用scrapy与selenium来爬取数据
  5. windows CE 4.2、5.0、6.0下载地址
  6. 玩转Spring Cache --- 整合进程缓存之王Caffeine Cache和Ehcache3.x【享学Spring】
  7. Sequence的层次化
  8. 运动目标检测之帧差法
  9. OFDM 和 OFDMA
  10. INSERT INTO 小技巧