Entity Framework Core 3.0 Preview 6 发布

Entity Framework Core 3.0 Preview 6 和 Entity Framework 6.3 Preview 6发布,可通过 NuGet.Org 获取使用。

下面简单介绍新特性。

EF Core 3.0 Preview 6 新特性

据官方介绍,最近几个月他们的工作主要集中在 EF Core 3.0 的新 LINQ 实现上。虽然工作尚未完成,并且许多预期的功能也尚未启用,但依然有必要发布此版本,因为如果没有将新实现集成到主分支的代码库中,团队无法取得更多进展。

查询方面的变更

preview 6 在 LINQ 的新实现方面有一些重大限制,这些限制会影响执行除最简单查询以外的任意应用程序。

临时限制:内存数据库和 Cosmos DB 供给程序在此预览版中不起作用

在切换到新实现的初始阶段,内存数据库和 Cosmos DB 供给程序的功能已损坏,如果有童鞋的代码依赖于这些程序,建议跳过 preview 6。

临时限制:查询转换的几个方面不适用于关系数据库,使用以下任何这些结构的查询很可能无法正确转换或执行

  • 拥有的类型
  • 收集参考预测
  • GroupBy运算符
  • 实体之间的平等比较
  • 查询标签
  • 全局查询过滤器

破坏性更改:不再在客户端上评估 LINQ 查询

这实际上是团队在 EF Core 3.0 中构建新的 LINQ 实现的主要动机之一。

在此版本的 EF Core 之前,无论在查询中的位置如何,查询中无法为 SQL 翻译的表达式在客户端上将会自动评估。这导致很难预测性能问题。这导致很难预测性能问题,特别是当谓词中使用的表达式未被翻译并且大量数据最终在客户端上被过滤时,每次我们引入新的翻译功能都会导致兼容性问题。

在新实现中,仅支持在查询的顶级投射中(top-level projection)评估客户端表达式。详情请查看这一重大变化的完整描述

破坏性变更:现有的 FromSql 重载已重命名为 FromSqlRaw和FromSqlInterpolated,并且只能在查询的根目录中使用:请在更改文档中阅读有关它的更多详细信息

切换到 Microsoft.Data.SqlClient

正如最近宣布的那样,SQL Server 的 ADO.NET 供给程序的开发已经转移到这个新的软件包。SQL Server 的 EF Core 供给程序现在使用新软件包连接到 SQL Server 数据库。

DbContext 脚手架改进

现在支持:

  • 没有 keys 的脚手架实体
  • 来自数据库视图的脚手架实体
  • DbContext脚手架来自 Azure SQL 数据仓库
  • 新的 dotnet ef dbcontext script 命令生成等同于调用的 SQL 脚本的命令EnsureCreated()
  • 新的程序包管理器控制台命令功能,Get-DbContext用于在DbContext应用程序中展示可用的列表类型

EF 6.3 Preview 6 新特性

自 preview 5 以来的主要变更

未向 DbProviderFactories 注册时,自动定位 System.Data.SqlClient。这意味着在开始使用 EF 之前不再需要将 SqlClient 注册为解决方案(workaround)。

EF 6 测试正在向 .NET Core 传递:团队进行了基础架构的更新,以使现有的测试可在 .NET Core 上运行。这使他们能够识别和修复产品代码中的问题,以及 .NET Core 3.0 Preview 6 中尚未修复的问题。

猜你喜欢

转载自www.oschina.net/news/107524/entity-framework-core-3-0-preview-6-released