Entity Framework Core 3.0 和 Entity Framework 6.3 通用版发布了,接下来我们看看它的新内容:

Entity Framework Core 3.0

EF Core 3.0 包括主要特性、小部分增强和错误修复,以下是一些重要内容:

LINQ overhaul

重构了 LINQ Provider,以便能够将更多的查询模式转换为 SQL,在更多情况下生成高效的查询,并防止低效率的查询无法被检测到。新的 LINQ Provider 是能在未来版本中提供新的查询功能和性能改进的基础,而不会破坏现有的应用程序和数据提供程序。

Cosmos DB 支持

EF Core 的 Cosmos DB Provider 让熟悉 EF 编程模型的开发人员能够轻松地将 Azure Cosmos DB 作为应用程序数据库。其目标是使 Cosmos DB 的一些优点,如全球分布(Global distribution)、“always on”可用性、弹性可伸缩性和低延迟,被 .NET 开发人员更容易访问。Cosmos DB Provider 针对 Cosmos DB 中的 SQL API 启用了大多数 EF Core 功能,如自动更改跟踪、LINQ 和值转换。

C# 8.0 支持

EF Core 3.0 利用了 C# 8.0 中的一些新特性:

  • 异步流:异步查询结果现在使用新标准 IAsyncEnDigable<T> 接口公开,并且可以使用 await foreach
  • 可空引用类型:在代码中启用此新功能时,EF Core 检查引用类型属性的空值性,并将其应用于数据库中相应的列和关系

拦截数据库操作 

EF Core 3.0 中的包含新的 API,用于拦截数据库操作。这与 EF 6 中存在的截取功能非常相似,它允许编写简单的逻辑,只要打开数据库连接、提交事务或执行查询,EFCore 就会自动调用该逻辑。拦截器通常允许在操作发生之前或之后拦截它们。当在它们发生之前拦截它们时,可以旁路执行并提供截取逻辑的备用结果。

例如,要操作命令文本,可以创建一个 IDbCommandInterceptor:

public class HintCommandInterceptor : DbCommandInterceptor
{public override InterceptionResult ReaderExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result){// Manipulate the command text, etc. here...command.CommandText += " OPTION (OPTIMIZE FOR UNKNOWN)";return result;}
}

并将其注册到你的 DbContext 中:

services.AddDbContext(b => b.UseSqlServer(connectionString).AddInterceptors(new HintCommandInterceptor()));

数据库视图的逆向工程

Query Types(表示可以从数据库读取但未更新的数据),现在重命名为 keyless entity types。由于 EF Core 非常适合在大多数场景中映射数据库视图,所以现可在反向工程数据库视图时自动创建 keyless entity types。

例如,使用 DotNet EF 命令行工具(dotnet ef command-line tool),键入:

dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer

该工具将自动为没有键的视图和表,提供 scaffold types:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{modelBuilder.Entity<Names>(entity =>{entity.HasNoKey();entity.ToView("Names");});modelBuilder.Entity<Things>(entity =>{entity.HasNoKey();});
}

与主体共享表的依赖实体是可选的

从 EF Core 3.0 开始,如果 OrderDetails 属于 Order 或显式映射到同一个表,则可以在没有 OrderDetails 和所有 OrderDetails 属性的情况下添加 Order,但主键将映射到可空列。

当查询时,如果它必要属性不存在值,或者它除了主键之外没有必要属性,EF Core 会将 OrderDetails 设置为 null。

public class Order
{public int Id { get; set; }public int CustomerId { get; set; }public OrderDetails Details { get; set; }
}[Owned]
public class OrderDetails
{public int Id { get; set; }public string ShippingAddress { get; set; }
}

Entity Framework 6.3

最新版本的 EF 6 移植到 .NET Core 3.0 上,以下是一些最显著的改进:

  • 支持 .NET Core 3.0

    • 除了 .NET Framework 4.0 和 4.5 之外,EF 6.3 runtime 包现支持 .NET Standard 2.1
    • 迁移命令已被重写,以执行进程外和使用 SDK 样式的项目
  • 对 SQL Server 层次结构的支持
  • 改进与 Roslyn 和 NuGet PackageReference 的兼容性
  • 添加了 ef6.exe 实用程序,取代了 portate.exe,用于启用、添加、编写脚本和应用来自程序集的迁移

在 .NET Core 中使用 EF 6.3 有一定的限制。例如:

  • 数据提供程序也需要移植到 .NET Core。然而只移植了包含在 EF 6.3 包中的 SQL Server 提供程序
  • spatial 支持不会在 SQL Server 中启用,因为 spatial 类型无法使用 .NET Core
  • 目前不支持在 .NET Core 或 .NET Standard 项目上直接使用 EF designer

详情见发布说明:

https://devblogs.microsoft.com/dotnet/announcing-ef-core-3-0-and-ef-6-3-general-availability/

Entity Framework Core 3.0 和 Entity Framework 6.3 正式发布相关推荐

  1. Entity Framework Core 2.0的新特性

    虽然EF Core 2.0存在大量槽点,但是它也给出了不少亮点.在本文中,我们将介绍这次发布版的部分亮点. \\ 数据库表切分(Table Splitting) \\ ORM常被吐槽是总是对所请求数据 ...

  2. Entity Framework Core 6.0 预览4 性能改进

    起因 微软在Build2021开发者大会上,发布Entity Framework Core 6.0(简称EFCore 6)预览第四版,号称是性能版本,性能提升主要对于Entity Framework  ...

  3. Entity Framework Core 2.0 使用代码进行自动迁移

    一.前言 我们在使用EF进行开发的时候,肯定会遇到将迁移更新到生产数据库这个问题,前面写了一篇文章介绍了Entity Framework Core 2.0的入门使用,这里面介绍了使用命令生成迁移所需的 ...

  4. Entity Framework Core 2.0 特性介绍和使用指南

    前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升级EF也发展到EF6.x,Entity Framework Core是一个支持跨平台的全新版本, ...

  5. Entity Framework Core 2.0 全局查询过滤器

    本博文翻译自: http://gunnarpeipman.com/2017/08/ef-core-global-query-filters/ Entity Framework Core 2.0 全局查 ...

  6. [转帖]2016年时的新闻:ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0

    ASP.NET Core 1.0.ASP.NET MVC Core 1.0和Entity Framework Core 1.0 http://www.cnblogs.com/webapi/p/5673 ...

  7. Entity Framework Core 7.0 未来规划

    Entity Framework Core 7.0(也称为 EF Core 7 或 EF7)的未来规划.该计划汇集了许多相关意见,并概述了微软打算在何处以及如何投资  EF7. IMPORTANT 此 ...

  8. Entity Framework Core 3.1 和 Entity Framework 6.4 发布

    目前,Entity Framework Core 3.1 和 Entity Framework 6.4 已正式发布. EF Core 3.1的获取方式 EF Core 3.1 作为一组 NuGet 软 ...

  9. Entity Framework Core 2.0 使用入门

    本文转载自作者:晓晨Master(李志强) 原文章地址 https://www.cnblogs.com/stulzq/p/7717873.html 一.前言 Entity Framework(后面简称 ...

最新文章

  1. 基于混合储能的并网光伏发电系统仿真
  2. 信息系统项目管理师案例分析答题技巧
  3. 华为的数字化转型与数据治理
  4. 特殊人物请遵循公司工作的基本准则
  5. 大脑遗忘与数据结构中的对列相似
  6. Android studio for mac
  7. okhttp3 ExceptionInInitializerError 异常处理
  8. AMS1117典型电路
  9. 不要拿你的认知来评价别人
  10. 牛客小白月赛2 I.艺
  11. 麻省理工学院公开课:计算机科学及编程导论习题4下
  12. 股票、基金、场内ETF基金下载数据代码例子
  13. SkeyeVSS实现RTSP、Onvif监控摄像头网页无插件化直播监控解决方案
  14. Word文档中如何快速切换英文大小写
  15. java中dao是什么意思
  16. LeetCode刷题Python实录
  17. 英语阅读重点单词总结
  18. 一点儿考研经验+这一年的总结0.0
  19. 如何给U盘或移动硬盘添加个性的图标? | 不着调软件
  20. debian时间同步_如何在Debian 10上设置时间同步

热门文章

  1. mysql索引的概念和作用_索引的基本概念及作用
  2. netty4 收不到服务器响应的数据_Netty模拟redis服务器
  3. 元宵节正月十五素材图片,可以做壁纸高清!
  4. 壁纸控的你需要看这里!
  5. UI设计中的黄金分割率,实用案例适合临摹学习
  6. linux parted命令,Linux分区之parted命令详解
  7. 牛客网编程题07--提取不重复的整数
  8. CUBLAS变量解释(1)
  9. Intel初始化和模式切换示例
  10. Linux进程睡眠状态disk sleep