实体框架的过去版本Past Releases of Entity Framework

第一版实体框架在2008中发布,作为 .NET Framework 3.5 SP1 和 Visual Studio 2008 SP1 的一部分。

从 EF 4.1 版本开始,该版本已作为EntityFramework NuGet 包提供-当前 NuGet.org 上最热门的包之一。

在版本4.1 和5.0 之间,EntityFramework NuGet 包扩展了作为 .NET Framework 一部分提供的 EF 库。

从版本6开始,EF 变成了一个开源项目,同时从 .NET Framework 完全移入。 这意味着,当你将 EntityFramework 版本 6 NuGet 包添加到应用程序时,你将获得 EF 库的完整副本,该副本不依赖于 .NET Framework 附带的 EF 位。 这有助于在一定程度上加快新功能的开发和交付速度。

2016年6月发布 EF Core 1.0。 EF Core 基于新的代码库,旨在作为 EF 的更轻型且可扩展的版本。 目前 EF Core 是 Microsoft 的实体框架团队开发的主要焦点。 这意味着没有为 EF6 计划的新的主要功能。 但是,EF6 仍将保持为开源项目和受支持的 Microsoft 产品。

下面是过去版本的列表,采用反向时间顺序,其中包含有关每个版本中引入的新功能的信息。

Visual Studio 2017 15.7 中的 EF 工具更新EF Tools Update in Visual Studio 2017 15.7

2018 年 5 月,我们在 Visual Studio 2017 15.7 中发布了更新后的 EF 工具。 该版本包括对一些常见点的改进:

  • 修复了多个用户界面辅助功能 bug
  • 从现有数据库生成模型时 SQL Server 性能退化的解决方法 #4
  • 支持适用于 SQL Server 上较大模型的更新模型 #185

此新版本的 EF 工具中的另一项改进是,在新项目中创建模型时会安装 EF 6.2 运行时。 借助较旧版本的 Visual Studio,可通过安装相应版本的 NuGet 包来使用 EF 6.2 运行时(以及以前任何版本的 EF)。

EF 6.2。0EF 6.2.0

EF 6.2 运行时已于 2017 年 10 月发布到 NuGet。 在我们开源社区参与者的努力下,EF 6.2 包括大量的 bug 修复产品增强功能

下表简要列出了影响 EF 6.2 运行时的最重要的更改:

  • 通过加载持久性缓存中已完成的 Code First 模型来加快启动 #275
  • 采用 Fluent API 定义索引 #274
  • 通过 DbFunctions.Like() 编写在 SQL 中转换为 LIKE 的 LINQ 查询 #241
  • Migrate.exe 现支持脚本选项 #240
  • EF6 现在可使用 SQL Server 中的序列生成的键值 #165
  • 更新 SQL Azure 执行策略的暂时性错误列表 #83
  • Bug:重试查询或 SQL 命令失败,“另一 SqlParameterCollection 中已包含 SqlParameter”#81
  • Bug:DbQuery.ToString() 评估在调试程序中经常超时 #73

EF EF6.1。3EF 6.1.3

EF ef6.1.3 运行时发布到了2015年10月的 NuGet。 此版本仅包含对6.1.2 版本报告的高优先级缺陷和回归的修补程序。 修复包括:

  • 查询:EF 6.1.2 中的回归:OUTER 适用于1:1 关系和 “let” 子句的已引入和更复杂的查询
  • 继承类中隐藏基类属性的 TPT 问题
  • 当文本中包含单词 “DbMigration” 时,Sql 失败
  • 创建供 unionall 和交集平展支持的兼容性标志
  • 具有多个包含的查询在6.1.2 中不起作用(在6.1.1 中工作)
  • 从 EF 6.1.1 升级到6.1.2 后,出现 SQL 语法错误

EF 6.1。2EF 6.1.2

EF 6.1.2 运行时已发布到2014年12月的 NuGet。 此版本主要涉及 bug 修复。 我们还接受了社区成员的几个值得注意的更改:

  • 可以从应用程序/web.config 文件配置查询缓存参数

    1. <entityFramework>
    2. <queryCache size='1000' cleaningIntervalInSeconds='-1'/>
    3. </entityFramework>
  • DbMigration 上的 SqlFile 和 SqlResource 方法允许您运行存储为文件或嵌入资源的 SQL 脚本。

EF 6.1。1EF 6.1.1

EF 6.1.1 运行时已发布到2014年6月。 此版本包含许多人遇到的问题的修补程序。 其他:

  • 设计器:在 EF6 设计器中打开具有十进制精度的 EF5 edmx 时出错
  • LocalDB 的默认实例检测逻辑不适用于 SQL Server 2014

EF 6.1。0EF 6.1.0

EF 6.1.0 运行时发布到了2014年3月的 NuGet。 此次要更新包含大量新功能:

  • 工具合并为创建新的 EF 模型提供了一种一致的方法。 此功能扩展了 ADO.NET 实体数据模型向导以支持创建 Code First 模型,包括从现有数据库进行反向工程。 这些功能之前已在 EF Power Tools 中提供 Beta 版质量。
  • 处理事务提交失败 会提供 CommitFailureHandler,它利用新引入的截取事务操作的能力。 CommitFailureHandler 允许在提交事务的同时从连接故障中自动恢复。
  • IndexAttribute 允许通过在 Code First 模型中的属性(或属性)上放置 [Index] 特性来指定索引。 然后 Code First 将在数据库中创建相应的索引。
  • 公共映射 API提供对信息 EF 的访问,以了解如何将属性和类型映射到数据库中的列和表。 在以前的版本中,此 API 是内部的。
  • 通过 App/web.config 文件配置侦听器的能力 允许添加侦听器,而无需重新编译应用程序。
  • DatabaseLogger是一个新的侦听器,可让你轻松地将所有数据库操作记录到文件中。 与上一项功能结合使用,可以轻松地针对已部署的应用程序的数据库操作进行日志记录,而无需重新编译。
  • 改进了迁移模型更改检测,使基架迁移更准确;还增强了更改检测过程的性能。
  • 性能改进,包括在初始化期间降低数据库操作、在更多方案中优化 null 相等性比较、更快速地生成视图(创建模型)以及更有效地具体化具有多个关联的跟踪实体。

EF 6.0。2EF 6.0.2

EF 6.0.2 运行时已发布到2013年12月的 NuGet。 此修补程序版本仅限于修复在 EF6 版本中引入的问题(自 EF5 以来性能/行为的回归)。

EF 6.0。1EF 6.0.1

EF 6.0.1 运行时已发布到2013年10月的 NuGet,因为后者嵌入到了几个月之前的 Visual Studio 版本中。 此修补程序版本仅限于修复在 EF6 版本中引入的问题(自 EF5 以来性能/行为的回归)。 最值得注意的更改是解决 EF 模型的预热过程中的某些性能问题。 这一点非常重要,因为预热性能是 EF6 的一个重点领域,而这些问题取消 EF6 的一些其他性能。

EF 6。0EF 6.0

EF 6.0.0 运行时发布到了2013年10月的 NuGet。 这是EntityFramework NuGet 包中的第一个版本,在该版本中,不依赖于 .NET Framework 中的 EF 位。 将运行时的剩余部分移到 NuGet 包需要对现有代码进行大量的重大更改。 有关升级所需的手动步骤的详细信息,请参阅升级到实体框架 6部分。

此版本包含许多新功能。 以下功能适用于使用 Code First 或 EF 设计器创建的模型:

  • 异步查询和保存 增加了对 .net 4.5 中引入的基于任务的异步模式的支持。
  • 连接复原 允许从暂时性连接故障中自动恢复。
  • 基于代码的配置 使你能够在代码中执行配置(传统上在配置文件中执行)。
  • 依赖项解析 引入了对服务定位器模式的支持,并分解了某些功能,这些功能可以替换为自定义实现。
  • 拦截/SQL 日志记录 提供低级别的构建基块,用于截获 EF 操作,同时构建简单的 SQL 日志记录。
  • 使用模拟 framework编写你自己的测试时,可测试性改进可以更轻松地为 DbContext 和 DbSet 创建测试双精度。
  • 现在可以使用已打开的 DbConnection 创建 DbContext, 这会启用在创建上下文时可以打开连接的情况(例如,在不能保证连接状态的组件之间共享连接)的情况。
  • 改进的事务支持 为框架的外部事务提供支持,并改进了在框架中创建事务的方式。
  • .Net 4.0 上的枚举、空间和更好的性能-通过将已在 .NET Framework 中的核心组件移到 EF NuGet 包中,我们现在可以提供枚举支持、空间数据类型和 .net 4.0 上 EF5 的性能改进。
  • 枚举的性能得到改进。包含在 LINQ 查询中
  • 缩短了预热时间(视图生成) ,尤其是对于大型模型。
  • 插接式复数形式 & Singularization 服务
  • 现在支持实体类上Equals 或 GetHashCode 的自定义实现
  • DbSet. AddRange/RemoveRange提供一种优化的方式来添加或删除集中的多个实体。
  • DbChangeTracker HasChanges提供一种简单有效的方法来查看是否有任何挂起的更改保存到数据库中。
  • SqlCeFunctions提供与 SqlFunctions 等效的 SQL Compact。

以下功能仅适用于 Code First:

  • 自定义 Code First 约定 允许编写自己的约定,以帮助避免重复配置。 我们提供了一个简单的轻型约定 API 以及一些更复杂的构建基块,使你能够创作更复杂的约定。
  • 现在支持 Code First 映射到插入/更新/删除存储过程
  • 幂等迁移脚本 允许生成一个 SQL 脚本,该脚本可以将任何版本的数据库升级到最新版本。
  • 配置的迁移历史记录表 允许自定义迁移历史记录表的定义。 这对于需要适当的数据类型等的数据库提供程序特别有用,因为需要为迁移历史记录表指定这些数据类型才能正常工作。
  • 当使用迁移时,或 Code First 自动为您创建数据库时,每个数据库的多个上下文将删除每个数据库的一个 Code First 模型的以前限制。
  • DbModelBuilder 是一个新的 Code First API,它允许在一个位置配置 Code First 模型的默认数据库架构。 以前 Code First 的默认架构已硬编码为 “dbo”,以及通过 ToTable API 配置表所属架构的唯一方法。
  • 在将配置类与 Code First 熟知 API 一起使用时, AddFromAssembly 方法可让你轻松地添加在程序集中定义的所有配置类。
  • 自定义迁移操作 使您能够添加要在基于代码的迁移中使用的其他操作。
  • 对于使用 Code First 创建的数据库,默认事务隔离级别将更改为 READ_COMMITTED_SNAPSHOT ,从而实现更高的可伸缩性和更少的死锁。
  • 实体和复杂类型现在可以是 nestedinside 类

EF 5。0EF 5.0

2012年8月发布了 EF 5.0.0 运行时。 此版本引入了一些新功能,包括枚举支持、表值函数、空间数据类型和各种性能改进。

Visual Studio 2012 中的 Entity Framework Designer 还引入了对每个模型的多个关系图的支持、设计图面上的形状的颜色以及存储过程的批处理导入。

下面是专门为 EF 5 版本组合在一起的内容列表:

EF 4.3。1EF 4.3.1

Ef 4.3.1 运行时在 EF 4.3.0 之后不久发布到 2012 NuGet。 此修补版本包含对 EF 4.3 版本的一些 bug 修复,并为使用 EF 4.3 与 Visual Studio 2012 的客户引入更好的 LocalDB 支持。

下面是专门为 EF 4.3.1 版本组合在一起的内容列表,为 EF 4.1 提供的大多数内容也适用于 EF 4.3:

EF 4。3EF 4.3

EF 4.3.0 运行时已发布到2012年2月的 NuGet。 此版本包含新的 Code First 迁移功能,该功能允许增量更改 Code First 创建的数据库,因为 Code First 模型演变。

下面是专为 EF 4.3 版本组合在一起的内容列表,为 EF 4.1 提供的大多数内容也适用于 EF 4.3:

EF 4。2EF 4.2

EF 4.2.0 运行时已发布到2011年11月的 NuGet。 此版本包含对 EF 4.1.1 版本的 bug 修复。 由于此发行版只包含 bug 修复,因此,它可能已成为 EF 4.1.2 修补程序版本,但我们选择迁移到4.2,以允许我们从在4.1 版本中使用的基于日期的修补程序版本号开始,并采用语义 Versionsing标准进行语义版本控制。

下面是专为 EF 4.2 版本组合在一起的内容列表,为 EF 4.1 提供的内容也适用于 EF 4.2:

EF 4.1。1EF 4.1.1

EF 4.1.10715 运行时已发布到2011年7月的 NuGet。 除了 bug 修复外,此修补程序版本还引入了一些组件,使设计时工具可以更轻松地处理 Code First 模型。 这些组件由 Code First 迁移(包括在 EF 4.3 中)和 EF Power Tools 使用。

你会注意到,包的异常版本号4.1.10715。 我们在决定采用语义版本控制之前,使用基于日期的修补程序版本。 将此版本视为 EF 4.1 修补程序1(或 EF 4.1.1)。

下面是我们将4.1.1 版本组合在一起的内容列表:

EF 4。1EF 4.1

EF 4.1.10331 运行时是第一次在 NuGet 上发布,2011年4月。 此版本包括简化的 DbContext API 和 Code First 的工作流。

你会注意到奇怪的版本号,4.1.10331,其实际为4.1。 此外,还会有一个4.1.10311 版本,该版本应为4.1.0 (”rc” 代表 “候选发布”)。 我们在决定采用语义版本控制之前,使用基于日期的修补程序版本。

下面是我们为4.1 版本组合在一起的内容列表。 很多情况仍适用于实体框架的更高版本:

EF 4。0EF 4.0

此版本包含在2010的4月 .NET Framework 4 和 Visual Studio 2010 中。 此版本中的重要新功能包括 POCO 支持、外键映射、延迟加载、可测试性改进、可自定义代码生成和 Model First 工作流。

尽管它是实体框架的第二个版本,但它被命名为 EF 4,以与其随附的 .NET Framework 版本保持一致。 在此版本发布后,我们开始在 NuGet 上提供实体框架,并采纳语义版本控制,因为我们不再与 .NET Framework 版本关联。

请注意,某些后续版本的 .NET Framework 附带了包含 EF 位的重大更新。 事实上,EF 5.0 的许多新功能已实现为这些位的改进。 但是,为了合理化 EF 的版本控制情景,我们将继续引用作为 EF 4.0 运行时的一部分 .NET Framework 的 EF 位,而所有更新版本都包含EntityFramework NuGet 包

EF 3。5EF 3.5

实体框架的初始版本包含在3.5 年 8 2008 月发布的 .NET Service Pack 1 和 Visual Studio 2008 SP1 中。 此版本提供了使用 Database First 工作流的基本 O/RM 支持。