1.翻译:EF基础系列--什么是Entity Framework?
大家好,好久不见,EF系列之前落下了,还是打算重新整理一下。
先说说目前的打算:先简单了解一下EF基础系列-->然后就是EF 6 Code-First系列-->接着就是EF 6 DB-First系列-->最后就是EF Core系列的学习了。EF Model-First已经过时,被微软抛弃,就不学了。这一次打算好好整理一下,一定不会烂尾,更新的可能慢点,但一定不烂尾,一定不烂尾,一定不烂尾。谢谢大家支持!
好了,废话不多说,直接步入正题。
本系列是翻译系列,原文地址是:什么是Entity Framework?
早在.NET 3.5以前,程序员都是经常写ADO.NET代码或者使用企业内部访问数据的代码块,来从相应的数据库中查询数据或者保存数据到其中。我们经常需要打开数据库的连接,然后创建一个数据集(DataSet),来查询数据,或者提交数据到数据库,然后手动写代码将DataSet的数据转化为.NET 对象中,反之亦然。这样的做法是累赘的,而且容易出错。微软提供了一个框架叫做“Entity Framework”,用来简化上述的操作。
Entity Framework是微软一手打造的开源的ORM框架。它确保开发者可以使用特定的领域类而不是把时间消耗在相关联的数据表和表的数据列上,使用EF,开发者可以在处理数据的时候,只用专注于更高级别的抽象层,写更少的代码就可以完成和传统开发相同的工作。
官方的定义是:“EF是关系对象映射框架,它确保.NET开发者开发者,使用.NET对象来和数据库打交道,而不必去写传统开发模式中的数据库访问的代码”。
下面的图形,列出来了EF在你的项目中的起到的作用。

如上图所示,EF嵌套在业务层和数据库层中间,数据保存的时候是这样,数据值保存在业务层的属性中,然后通过EF转化之后保存到数据库,查询数据的时候,也是类似,数据从数据库抓取之后,通过EF转化之后,就传递给业务层的属性中。
Entity Framework的特点:
- 跨平台(Cross-platform):EF Core是跨平台的框架,可以运行在WIndows,Linux和Mac上;
- 模型化(Modelling):EF基于POCO(Plain Old CLR Object)实体,创建了一个实体数据模型(EDM--Entity Data Model),这些实体数据具有不同类型的属性。当查询或者保存数据库的时候就会使用到这些实体,和相应的数据打交道。
- 查询(Querying):EF允许我们使用LINQ查询语法来从数据库获取数据,数据库提供程序将会把LINQ语句,翻译成SQL语句。EF同样还是允许我们使用原生的SQL。
- 更改追踪(Change Tracking):EF会持续追踪,将要提交到数据库的实体的任何改变。(这里指的是实体的属性值得改变)。
- 保存(Saving):当你调用EF的SaveChanges方法的时候,EF就会对数据库发起,执行增删查改的指令。EF同样提供了异步保存SaveChangesAsync的方法。
- 并发(Concurrency):EF默认使用乐观并发,来确保数据从数据库获取之后,被其他用户更改。
- 事务(Transactions):查询或者保存数据的时候,EF提供了自动的事务管理,当然EF可以允许你自定义事务操作。
- 缓存(Caching):EF提供了一些开箱即用的缓存。所以当重复查询数据的时候,会直接从缓存获取数据,而不是又去查询一遍数据库。
- 内置的约定(Built-in Conventions):EF遵循约定大于配置原则,根据这些原则自动配置EF实体。
- 配置(Configurations):EF允许我们使用数据注解特性(Data annotation attribute)来配置EF实体,还可以使用Fluent API,来重写默认的配置。
- 迁移(Migrations):EF 提供了一系列的迁移指令,我们可以通过Nuget Package Manage 控制台来执行这些指令或者使用命令行的方式来执行这些操作。
Entity Framework最新的版本
EF是在2008年的时候,跟随.NET Framework 3.5一起由微软发布的。从那时候开始就一直迭代开发,经历了很多版本。
当前的版本是 EF6和EF Core(注意:这是这篇文章中写的时候,最新的版本,实际上,EF Core 3.0都出来了,而且EF现在是6.2的版本)。下面的图,列出来了EF6和EF Core之间的差异。

EF 6版本的历史

EF Core版本的历史

好了,EF的基础系列,第一篇就介绍完了。有不明白的可以留言,谢谢支持。
附录:
EF 6官方文档: https://docs.microsoft.com/zh-cn/ef/ef6/
EF Core官方文档:https://docs.microsoft.com/zh-cn/ef/core/
1.翻译:EF基础系列--什么是Entity Framework?的更多相关文章
- 4.翻译:EF基础系列--EF架构
原文地址:http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx 下面的图形,展示了EF的总体架构: 让我们来 ...
- 8.翻译:EF基础系列----EF中实体的状态
原文链接:http://www.entityframeworktutorial.net/basics/entity-states.aspx 在实体的生命周期中,EF API维护着每一个实体的状态,对于 ...
- 7.翻译:EF基础系列---EF中的实体类型
原文地址:http://www.entityframeworktutorial.net/Types-of-Entities.aspx 在Entity Framework中有两种实体类型:一种是POCO ...
- 6.翻译:EF基础系列---什么是EF中的实体?
原文地址:http://www.entityframeworktutorial.net/basics/what-is-entity-in-entityframework.aspx EF中的实体就是继承 ...
- 5.翻译:EF基础系列---EF中的上下文类
原文地址:http://www.entityframeworktutorial.net/basics/context-class-in-entity-framework.aspx EF中的上下文类是一 ...
- 【Basics of Entity Framework】【EF基础系列1】
EF自己包括看视频,看MSDN零零散散的学了一点皮毛,这次打算系统学习一下EF.我将会使用VS2012来学习这个EF基础系列. 现在看看EF的历史吧: EF版本 相关版本特性介绍 EF3.5 基于数据 ...
- 10.翻译:EF基础系列---EF中的持久性
原文链接:http://www.entityframeworktutorial.net/EntityFramework4.3/persistence-in-entity-framework.aspx ...
- 安装Entity Framework【Setup Entity Framework Environment】(EF基础系列篇4)
Entity Framework 5.0 API是分布在两个地方:NuGet和.NET Framework中,这个.NET framework 4.0/4.5包含EF核心的API,然而通过NuGet包 ...
- 3.翻译:EF基础系列--EF怎么工作的?
原文链接:http://www.entityframeworktutorial.net/basics/how-entity-framework-works.aspx 这里,你将会大概了解到EF是怎么工 ...
随机推荐
- flask 中文编码解码
process.append("中文") print(process) # return Response(json.dumps(process), mimetype='appli ...
- [IBM][CLI Driver][DB2/NT] SQL1101N 不能以指定的授权标识和密码访问节点 "" 上的远程数据库 "LBZM"。 SQLSTATE=08004
[IBM][CLI Driver][DB2/NT] SQL1101N 不能以指定的授权标识和密码访问节点 "" 上的远程数据库 "LBZM". SQLST ...
- Spring Boot学习笔记:ApplicationEvent和ApplicationEventListener事件监听
采用事件监听的好处 以用户注册的业务逻辑为例,用户在填写完信息表单后,提交信息到后台,后台对用户信息进行处理,然后给用户返回处理结果的信息. 如上图所示,用户在注册时,后台需要处理一些系列流程,实际业 ...
- Syslog和Windows事件日志收集
Syslog和Windows事件日志收集 EventLog Analyzer从分布式Windows设备收集事件日志,或从分布式Linux和UNIX设备.交换机和路由器(Cisco)收集syslog.事 ...
- python学习 day14 (3月19日)----
04 json # 1. 用于多种语言 交互 编程语言通用数据 # 内置的 不需要安装直接导入使用 import json # 导入 # # dumps loads dump load # dic = ...
- linux中命令突然不能用
先用:echo $PATH 发现path丢失:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 于是用临时环境变量 export ...
- Mac DS_Store
.DS_Store是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows的desktop.ini. 1,禁止.DS_store生成:打开 “终端” ,复制黏贴下 ...
- oracle远程连接
1.1.1 修改文件: 1.1.2 修改net Manager(可省略) 1.1.3 修改任何都需要重启oracle监听和启动服务
- Bootstrap Table 超多列 使用滚动条
overflow-x: scroll;横向滑动详细讲解 able显示滚动条,要先把table放到一个div中,控制div 属性overflow值为scroll <div style=" ...
- form表单序列化为json格式数据
在web开发过程中,经常遇到将form序列化不能格式的字符串提交到后台,下面就介绍怎样将form表单序列化为json字符串. 首先,是扩展的jquery序列化插件,依赖jquery.经测试,这段代码可 ...