Entity Framework基础(1)——什么是Entity Framework?
什么是Entity Framework?
在.NET 3.5之前,我们(开发者)经常编写ADO.NET代码或Enterprise Data Access Block从底层数据库保存或检索应用程序数据。我们以前的做法是:
- 打开一个数据库连接;
- 创建一个DataSet来获取或提交数据到数据库;
- 将数据从DataSet转换为.NET对象或相反的从.NET对象转换为DataSet,来满足业务规则。
这是一个麻烦且容易出错的过程。微软提供了“Entity Framework”框架,为你的应用自动化处理这些数据库相关的活动。
Entity Framework是一个由微软支持,用于.NET开发的开源ORM框架。它使开发人员能够通过实体类来处理数据,而无需关注存储此数据的底层数据库。有了Entity Framework,开发者在处理数据时可以在更高的抽象级别上工作,并且与传统应用程序相比,相比于传统应用程序,可以使用更少的代码创建和维护面向数据的应用。
官方定义:“Entity Framework是一种对象关系映射(O/RM),它使.NET开发人员能够通过.NET对象来操作数据库。它消除了开发者通常需要编写的大量数据访问代码的需要。”
下图说明了Entity Framework在你的应用程序的位置。
如上图所示,Entity Framework运行于业务实体(域类)和数据库之间。它保存业务实体属性中的数据到数据库,也可以从数据库中检索数据并自动将其转换为业务实体对象。
Entity Framework的特征
- 跨平台:EF Core是一个跨平台的框架,可以在Windows,Linux和Mac上运行。
- 建模:EF可以创建基于POCO(Plain Old CLR Object-简单传统 CLR 对象)实体的EDM(Entity Data Model-实体数据模型),含有get/set属性的不同数据类型。它使用此模型来查询或存储底层数据库的数据。
- 查询:EF允许我们使用LINQ(C#/VB.NET)来检索底层数据库中的数据。数据库提供者将LINQ转换为数据库特有的查询语言(如关系数据库SQL)。EF也同时允许我们执行原始SQL语句直接操作数据库。
- 更改跟踪:EF能跟踪需要提交到数据库的实体中实例(属性值)发生的更改。
- 保存:当调用
SaveChanges()
方法时,EF根据实体发生的更改,对数据库执行INSERT、UPDATE和DELETE命令。EF也提供了异步SaveChangesAsync()
方法。 - 并发:从数据在数据库中提取开始,EF默认使用开放式并发来保护我们做的修改不被其他用户覆盖。
- 事务:EF在查询或保存数据时自动执行事务管理。它还提供自定义事务管理的选项。
- 缓存:EF包括即用的一级缓存。因此,重复查询将从缓存中返回数据,而不是访问数据库。
- 固有规范:EF遵循配置编程模式的规范,并包括一系列自动配置EF模型的默认规则。
- 配置:EF允许我们通过使用注释属性配置EF模型,也可以使用Fluent API来覆盖默认规范。
- 迁移:EF提供了一系列迁移命令,我们可以在NuGet包管理器控制台或命令行界面中创建或管理底层数据库架构。
Entity Framework最新版本
Microsoft在2008的.NET Framework 3.5中引入了Entity Framework。自那时起,发布了许多版本的Entity Framework。目前有两个最新版本的Entity Framework:EF 6 和EF Core。下面的表格指出了EF 6 和EF Core的一些重要的不同:
EF 6历史版本
EF 版本 | 发布时间 | .NET Framework版本 |
---|---|---|
EF 6 | 2013 | .NET 4.0 & .NET 4.5, VS 2012 |
EF 5 | 2012 | .NET 4.0, VS 2012 |
EF 4.3 | 2011 | .NET 4.0, VS 2012 |
EF 4.0 | 2010 | .NET 4.0, VS 2010 |
EF 1.0 (or 3.5) | 2008 | .NET 3.5 SP1, VS 2008 |
了解有关EF 6版本历史及其功能的更多信息请点击
EF Core历史版本
EF Core 版本 | 发布时间 | .NET Framework版本 |
---|---|---|
EF Core 2.0 | 2017.08 | .NET Core 2.0, VS 2017 |
EF Core 1.1 | 2016.11 | .NET Core 1.1 |
EF Core 1.0 | 2016.06 | .NET Core 1.0 |
了解有关EF Core版本历史及其功能的更多信息请点击
个人渣翻,欢迎指正。