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是怎么工 ...
随机推荐
- java Mather 的 group 含义
参考博文: http://blog.csdn.net/java2king/article/details/4395067 明白了group 的 含义 public class Test { pub ...
- centOS 6.5下升级mysql,从5.1升级到5.6
转载:https://www.cnblogs.com/vickygu2007/p/5066409.html #mysqldump -uroot -p --all-databases > data ...
- @Valid报错 No validator could be found for constraint
使用hibernate validator出现上面的错误, 需要 注意 @NotNull 和 @NotEmpty 和@NotBlank 区别 @NotEmpty 用在集合类上面@NotBlank 用 ...
- jQuery动态控制下拉列表的被选项[转]
<form id="form" action="/query!query.action"> <select> <option va ...
- react native的注释
在react native 中是这样写注释的: {/*这里是注释*/}
- dj 中间件
中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响到 ...
- s4-9 二层设备
二层(数据链路层)设备有哪些? 网卡 网桥 交换机 NIC 网卡 Nework Interface Card 为主机提供介质的访问. MAC地址烧在网卡的 ROM中 NIC 网 ...
- i2c设备驱动注册
Linux I2C设备驱动编写(二) 原创 2014年03月16日 23:26:50 在(一)中简述了Linux I2C子系统的三个主要成员i2c_adapter.i2c_driver.i2c ...
- Python 之 Difflib
Python 之 Difflib 2017年7月8日 word文档地址:https://wenku.baidu.com/view/36692440854769eae009581b6bd97f19237 ...
- MapGis如何实现WebGIS分布式大数据存储的
作为解决方案厂商,MapGis是如何实现分布式大数据存储的呢? MapGIS在传统关系型空间数据库引擎MapGIS SDE的基础之上,针对地理大数据的特点,构建了MapGIS DataStore分布式 ...