EF Core 6.0的新计划
今天,我们很兴奋地与你分享Entity Framework Core 6.0的计划。
这个计划汇集了许多人的意见,并概述了我们打算在哪里以及如何优化实体框架(EF Core) 6.0版本。这个计划并不是固定不变的,并且会随着我们在这个版本上的工作而发展。这个计划包括来自像你一样的人的反馈,所以请让我们知道你的想法!
一般信息
EF Core 6.0是EF Core 5.0之后的下一个版本,目前计划于2021年11月与.net 6同时发布。EF Core 6.0将与.net 6一起作为一个长期支持(LTS)发布。
EF Core 6.0在发布时可能会以.net 6为目标。它不太可能支持任何.net Standard版本。它不能在.net Framwork上运行。
主题
高要求的功能
和往常一样,规划过程中的主要投入来自GitHub上的投票。对于EF Core 6.0,我们计划致力于以下高度要求的特性:
- SQL Server临时表
- 允许通过迁移创建临时表,以及允许通过LINQ查询访问历史数据。
- JSON列
- 引入可以由任何数据库提供者实现的通用JSON模式。
- JSON列支持将实现SQL Server和SQLite。(注意,PostgreSQL和MySQL提供程序已经支持JSON列了。)
- ColumnAttribute.Order
- 在创建带有迁移或确保重新创建的表时,允许对列进行任意排序。
性能
虽然EF Core总体上比EF6快,但仍有一些性能上的显著提升的地方。我们计划在EF Core 6.0中解决这些问题,同时改善我们的perf基础设施和测试。
- 性能基础结构和新测试
- 改进性能测试的基础设施,添加新的测试和修复容易实现的目标。
- 编译模型
- 编译后的模型将提高启动性能,并且在访问模型时通常具有更好的性能。
- TechEmpower Fortunes
- 我们计划在TechEmpower Fortunes测试中达到Dapper的表现。(这是一个重大的挑战,可能不会完全实现。尽管如此,我们还是会尽可能地接近。)
- Linker/ AOT
- 我们将继续研究如何让EF Core更好地使用Linker和AOT。我们不期望在6.0的框架内完全缩小差距,但我们希望取得重大进展。
迁移和部署
在对EF Core 5.0进行调查之后,我们计划引入对管理迁移和部署数据库的改进支持。这包括两个主要领域:
- 迁移包
- 迁移包将为部署EF Core迁移提供一个简单、健壮的机制。
- 管理迁移
- Wwe计划改进EF核心迁移的工具和项目/装配管理。
改进现有功能并修复bug
- EF6查询
- 我们计划缩小与EF6之间的查询差距,使所支持的EF Core查询成为所支持EF6查询的真正超集。
- 值对象
- 我们计划引入一种更好的体验,专注于领域驱动设计中值对象的需求。
- 这种方法将基于值转换器,而不是已被证明不适合的实体。
- Cosmos Provider
- 我们正在积极收集关于在EF Core 6.0中对Cosmos Provider做哪些改进的反馈.
- 向应用程序公开模型构建约定
- 模型构建约定目前由数据库provider控制。在EF Core 6.0中,我们打算允许应用程序hook并更改这些约定。
- 零bug平衡(ZBB)
- 我们计划在EF Core 6.0框架内修复所有未解决的非阻塞bug。
- 其他较小的特点
- 对非导航集合进行拆分查询
- 在逆向工程中检测简单的连接表并创建多对多关系
- 在SQLite和SQL服务器上完成完整/自由文本搜索
- SQL Server空间索引
- 为模型中给定类型的任何属性指定默认转换的机制/API
- 使用ADO.NET中新的批处理API
.net集成
EF的核心团队也在研究几个相关但独立的.net数据技术。特别是,我们计划在以下方面开展工作:
- 增强System.Data
- 新的批处理API的实现
- 继续与其他.net团队和社区合作,以理解和发展ADO.NET
- 对系统跟踪的诊断源进行标准化
- 增强Microsoft.Data.Sqlite
- 连接池
- Prepared statements
- 空引用类型
- 我们将对EF核心代码进行注释,以使用可空引用类型。
实验和调查
EF团队计划在EF Core6.0的框架内投入时间在两个领域进行实验和调查。这是一个学习的过程,因此在6.0版本中没有具体的交付计划。
- SqlServer.Core
- 这是一个与社区合作的实验,目的是确定在高性能SQL Server驱动程序中现代.net特性的潜力。
- GraphQL
- 我们计划对该领域进行研究,并与社区合作,找到改进.net中使用GraphQL的体验的方法。
了解更多
这篇文章是对EF Core 6.0计划的一个简要总结。请查看完整的计划以获得更多信息。
建议
你对计划的反馈很重要。在GitHub上为某个问题投票是表明该问题重要性的最好方式。然后,这些数据将被输入到下一个版本的计划过程中。
另外,如果你认为我们遗漏了一些对EF Core 6.0至关重要的东西,或者关注的方向是错误的,请评论这篇文章。
欢迎关注我的公众号,如果你有喜欢的外文技术文章,可以通过公众号留言推荐给我。
原文链接:https://devblogs.microsoft.com/dotnet/the-plan-for-entity-framework-core-6-0/
EF Core 6.0的新计划的更多相关文章
- EF Core 2.0 新特性
前言 目前 EF Core 的最新版本为 2.0.0-priview1-final,所以本篇文章主要是针对此版本的一些说明. 注意:如果你要在Visual Studio 中使用 .NET Core 2 ...
- EF Core 1.0中使用Include的小技巧
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于EF Core暂时不支持Lazy Loading,所以利用Include来加载额外 ...
- .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介
.NET Core 1.0.ASP.NET Core 1.0和EF Core 1.0简介 英文原文:Reintroducing .NET Core 1.0, ASP.NET Core 1.0, and ...
- EF Core 2.0使用MsSql/Mysql实现DB First和Code First
参考地址 EF官网 ASP.NET Core MVC 和 EF Core - 教程系列 环境 Visual Studio 2017 最新版本的.NET Core 2.0 SDK 最新版本的 Windo ...
- ASP.NET Boilerplate 学习 AspNet Core2 浏览器缓存使用 c#基础,单线程,跨线程访问和线程带参数 wpf 禁用启用webbroswer右键菜单 EF Core 2.0使用MsSql/MySql实现DB First和Code First ASP.NET Core部署到Windows IIS QRCode.js:使用 JavaScript 生成
ASP.NET Boilerplate 学习 1.在http://www.aspnetboilerplate.com/Templates 网站下载ABP模版 2.解压后打开解决方案,解决方案目录: ...
- EF Core 2.0 执行原始查询如何防止SQL注入
using (var context = new EFCoreDbContext()) { var searchString = "Jeffcky Wang"; Formattab ...
- EF Core 1.0 和 SQLServer 2008 分页的问题
EF Core 1.0 在sqlserver2008分页的时候需要指定用数字分页. EF Core1.0 生成的分页语句中使用了 Featch Next.这个语句只有在SqlServer2012的时候 ...
- ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First
ASP.NET Core 开发-Entity Framework Core 1.0 Database First,ASP.NET Core 1.0 EF Core操作数据库. Entity Frame ...
- EF Core 2.0中如何手动映射数据库的视图为实体
由于Scaffold-DbContext指令目前还不支持自动映射数据库中的视图为实体,所以当我们想使用EF Core来读取数据库视图数据的时候,我们需要手动去做映射,本文介绍如何在EF Core中手动 ...
随机推荐
- css样式规则
在css样式规则中: 1.选择器用于指定CSS样式作用的HTML对象,花括号内是对该对象设置的具体样式. 2.属性和属性值以"键值对"的形式出现. 3.属性是对指定的对象设置的样式 ...
- Kubernetes【K8S】(三):资源清单
K8S中的资源 K8S中所有的内容都抽象为资源,资源实例化之后叫做对象.一般使用yaml格式的文件来创建符合我们预期的pod,这样的yaml文件我们一般成为资源清单. 名称空间级资源 工作负载型资源( ...
- springmvc表单标签库的使用
springmvc中可以使用表单标签库,支持数据绑定,用来将用户输入绑定到领域模型. 例子来源<Servlet.JSP和SpringMVC学习指南> 项目代码 关键代码及说明 bean对象 ...
- Python-其他-round()保留小数位时遇到的问题
最近有一个需求,原有整数计算,改成小数计算,保留一位小数. 于是按照需求,将数据结构由 int 改为 float ,计算时采用round()方法来保留小数位. 第一版代码如下: a = 0.10000 ...
- 同一个UITextField 根据不同状态下弹出不同类型键盘遇到的坑
一,需求:有多个选项按钮,点击不同的按钮,textfield内容需求不同弹出对应需求的键盘类型. 二,问题:1.刚开始在按钮状态改变后设置 self.textField.keyboardType属性完 ...
- Java 面向对象概述
本文部分摘自 On Java 8 面向对象编程 在提及面向对象时,不得不提到另一个概念:抽象.编程的最终目的是为了解决某个问题,问题的复杂度直接取决于抽象的类型和质量.早期的汇编语言通过对底层机器作轻 ...
- js中获取监听键盘事件
<script type="text/javascript" language=JavaScript charset="UTF-8"> docume ...
- 漫画 | 老泪纵横,约会也不敢耽误改bug
啥都不说了, 直接看图, 就说你中了几枪. 小莱已经抹了好几把辛酸泪-- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 关于作者 作者:大家好,我是莱乌,BAT搬砖工一枚.从 ...
- tcp上传学习二--文本文件上传
//暮雪超霸.加油!!!package tcp文本上传; import java.io.BufferedReader; import java.io.FileReader; import java.i ...
- 解决threadLocal父子变量传递问题
一.问题的提出 在系统开发过程中常使用ThreadLocal进行传递日志的RequestId,由此来获取整条请求链路.然而当线程中开启了其他的线程,此时ThreadLocal里面的数据将会出现无法获取 ...