Entity Framework Core 3.0 和 Entity Framework 6.3 正式发布
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 正式发布相关推荐
- Entity Framework Core 2.0的新特性
虽然EF Core 2.0存在大量槽点,但是它也给出了不少亮点.在本文中,我们将介绍这次发布版的部分亮点. \\ 数据库表切分(Table Splitting) \\ ORM常被吐槽是总是对所请求数据 ...
- Entity Framework Core 6.0 预览4 性能改进
起因 微软在Build2021开发者大会上,发布Entity Framework Core 6.0(简称EFCore 6)预览第四版,号称是性能版本,性能提升主要对于Entity Framework ...
- Entity Framework Core 2.0 使用代码进行自动迁移
一.前言 我们在使用EF进行开发的时候,肯定会遇到将迁移更新到生产数据库这个问题,前面写了一篇文章介绍了Entity Framework Core 2.0的入门使用,这里面介绍了使用命令生成迁移所需的 ...
- Entity Framework Core 2.0 特性介绍和使用指南
前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升级EF也发展到EF6.x,Entity Framework Core是一个支持跨平台的全新版本, ...
- Entity Framework Core 2.0 全局查询过滤器
本博文翻译自: http://gunnarpeipman.com/2017/08/ef-core-global-query-filters/ Entity Framework Core 2.0 全局查 ...
- [转帖]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 ...
- Entity Framework Core 7.0 未来规划
Entity Framework Core 7.0(也称为 EF Core 7 或 EF7)的未来规划.该计划汇集了许多相关意见,并概述了微软打算在何处以及如何投资 EF7. IMPORTANT 此 ...
- 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 软 ...
- Entity Framework Core 2.0 使用入门
本文转载自作者:晓晨Master(李志强) 原文章地址 https://www.cnblogs.com/stulzq/p/7717873.html 一.前言 Entity Framework(后面简称 ...
最新文章
- 基于混合储能的并网光伏发电系统仿真
- 信息系统项目管理师案例分析答题技巧
- 华为的数字化转型与数据治理
- 特殊人物请遵循公司工作的基本准则
- 大脑遗忘与数据结构中的对列相似
- Android studio for mac
- okhttp3 ExceptionInInitializerError 异常处理
- AMS1117典型电路
- 不要拿你的认知来评价别人
- 牛客小白月赛2 I.艺
- 麻省理工学院公开课:计算机科学及编程导论习题4下
- 股票、基金、场内ETF基金下载数据代码例子
- SkeyeVSS实现RTSP、Onvif监控摄像头网页无插件化直播监控解决方案
- Word文档中如何快速切换英文大小写
- java中dao是什么意思
- LeetCode刷题Python实录
- 英语阅读重点单词总结
- 一点儿考研经验+这一年的总结0.0
- 如何给U盘或移动硬盘添加个性的图标? | 不着调软件
- debian时间同步_如何在Debian 10上设置时间同步