一步步学习EF Core(3.EF Core2.0路线图)

前言

这几天一直在研究EF Core的官方文档,暂时没有发现什么比较新的和EF6.x差距比较大的东西.不过我倒是发现了EF Core的路线图更新了,下面我们就来看看

今天我们来看看最新的EF Core 2.0路线图

 E文好的移步:https://github.com/aspnet/EntityFramework/wiki/Roadmap#ef-core-20

正文

嗯,我就直接翻译了,翻译的不好请各位大神原谅..

以下是EF Core的路线图。请注意,功能计划可能会更改。

这跟任何项目一样,很难准确地预测什么时候会确定。

即使如此,我们也认为尽可能公开和透明地对我们的计划非常重要,

这样我们的用户就可以获得正确的期望并相应地制定自己的计划。

 

1.时间表

EF Core的更新计划与.NET Core和ASP.NET Core时间表同步,如下:

发布版本发布季度
2.0- preview12017年第2季度
2.0- preview22017年第2季度
2.02017年第3季度
2.12017年第4季度

 

值得注意的一点是,在ASP.NET Core的路线图中,全新的SignalR将在ASP.NET Core2.1版本发布

 

2.积压的内容

因为EF Core是一个新的代码库,所以在Entity Framework 6.x中存在一个功能并不意味着会在EF Core中实现。

具体区别请移步:比较EF Core和EF6.x

我们提供了我们认为重要但还没实施功能列表。仅供参考

 

3.关键的ORM功能

下面是微软开发团队认为需要的东西,微软爸爸觉得..嗯..EF Core是可以向所有人推荐的EF版本。

但是在实现下面这些功能之前,虽然EF Core对于许多应用场景来说是一个有效的选择(特别是在.NET Core的平台上,因为EF6.x不起作用..(懵比脸)..),

但是对于许多应用来说,缺少下面这些功能将使EF6.x是目前更好的选择。

嗯..下面就是微软爸爸觉得需要,但是还在研发 或者斟酌的东西:

  3.1Query(查询)

  • 改进的Linq翻译将使更多的查询成功执行,使得更多的逻辑在数据库(而不是内存中)中进行查询,从而减少不必要的数据库访问。(这一项已经在2.0预览版本完成了很多.)

  • 延迟加载功能。

  • 对于不在模型中的原始SQL语句查询,允许使用原始SQL语句查询来填充不在模型中的类型(通常用于非规范化的视图模型数据)。

  3.2数据库图形化管理

  • 用于DBFirst的Visual Studio向导,允许您在从现有数据库创建模型时,可视化地配置连接,选择表等。

  • 从数据库更新模型允许以前从数据库逆向工程的模型将随着您对架构的更改而刷新。

  3.3Modelling(实体模型)

  • 复数/值类型是不具有主键的类型,用于表示实体类型上的一组属性。这通过EF Core 2.0中支持的所有类型和表解决。其中一部分已经在预览1完成了

  • 存储过程映射,允许EF使用存储过程来保存对数据库的更改(FromSql已经提供了对使用存储过程进行查询的良好支持)。

  • 改进的视图映射,允许EF自动从数据库逆向工程视图或使用迁移维护它们(DBFirst)。

4.高优先级的功能

  • 实体模型

    • 更灵活的属性映射,如构造函数参数,get / set方法,属性包等。

    • 简单的类型转换,如string => xml。

    • 多对多关系没有连接实体。可以与连接实体建立多对多关系。

    • 关系数据库的替代继承映射模式,例如每种类型的表(TPT)和每个具体类型TPC的表。

    • 空间数据类型,如SQL Server的geographygeometry

    • 可视化模型图以查看CoreFirst的模型图形。

  • CRUD

    • 初始化数据允许数据库在迁移过程中自动填充初始数据。

    • ETag式并发令牌支持提供了统一的编码模式,用于管理与模型配置无关的并发性。

    • 贪婪加载,允许在查询实体时始终检索默认的相关数据集。

    • 过滤加载,允许加载相关实体的一个子集。EF Core 2.0 预览版本中的全局查询过滤器已经解决了这一点

    • 简单的命令拦截提供了在发送到数据库之前/之后读取/写入命令的简单方法。

  • 更多的数据库支持

    • Redis

    • 其他非关系型数据库

    • Azure Table Storage

  • 平台

    • 通用Windows平台(UWP)目前适用于本地开发,但是与.NET Native工具链中的.NET Native工具链存在问题,EF和.NET Native团队正在努力解决。

    • Xamarin在使用EF core还未完全测试.

 

5.EF Core 2.0(还开发中...)

预览1版本已完成的主要功能:

  • 简化服务和提供商的架构(#7457) - 允许EF Core及其提供商以更简单和更有效的方式使用DI。(依赖注入~)

  • Group Join改进(#2546) - 此工作改进了为Group和Join所生成的SQL语句。

  • 改进的LINQ翻译(来自于GitHub上的各种问题) - 允许更多的查询成功执行,更多的逻辑在数据库中执行(而不是内存中),从而减少不必要地从数据库查询数据。

  • EF.Functions.Like()(#2850) - 允许将通配符的字符串匹配转换为SQL或在内存中进行匹配。

  • 拥有的实体和表分割(以启用复杂类型和/或值对象模式)(#246) - 允许映射类型不具有自己的身份,但始终依赖于其他对象,并将它们映射到与其父对象相同的表。

  • 全局查询过滤器(#5774) - 允许为实体类型配置垂直过滤器。然后,此过滤器将适用于所有查询,包括贪婪加载(即Include())。

  • 上下文池(#6923) - 通过使DbContext实例可以重用而不是始终从头开始创建,从而提高性能。(重要!!!重要!!!重要!!!)

  • 手动编译查询(#8449) - 允许查询表达式与代理相关联,从而可以只编译一次但执行多次,从而不会导致增加高速缓存键计算和高速缓存查找的成本。

  • 将SQLite提供程序移动到SQLitePCL.raw(Microsoft.Data.Sqlite#21) - 这为Microsoft.Data.Sqlite提供了一个更强大的解决方案,用于在不同平台上分发本机SQLite二进制文件。

  • IEntityTypeConfiguration(#2805) - 允许一个实体的Fluent API配置到一个类中。

下面是期望完成的其他功能:

  • 每个模型#7166只有一个提供商) - 显着增加了供应商如何与模型进行交互,并简化了惯例,注释和流畅的API如何与不同的提供商合作。

  • 综合测试和诊断(#218,#7217等)

  • 应用程序洞察集成(#8272) - 有助于改进和调试应用程序的诊断信息,使他变得更容易访问。

下面是取得了一些进展但有无法按时完成风险的内容:

  • 自包含类型映射(#7434) - 使扩展类型映射器更容易处理其他类型。

  • 数据播种(#629) - 允许在模型中指定数据库的初始数据,并自动填充到数据库中。

原来考虑加入,但没有进展,基本上要推迟的内容:

  • 用于非实体类型的原始SQL查询(#1862) - 使用不在模型中的类型执行具有临时映射的查询。

  • Azure搜索集成 - 允许您在查询数据时使用Azure搜索中的搜索索引。在数据更新操作期间透明地同步索引数据。

  • 从数据库更新模型(#831) - 允许您逐渐更新以前从数据库反向设计的模型,并更改了对数据库模式所做的更改。这允许您更新模型以匹配当前模式,而不会丢失在反向设计后手动对模型进行的任何更改。

  • 生命周期挂钩(#626) - 包括创建实体(ObjectMaterialized从EF6.x),数据库命令拦截,连接打开时运行附加命令的事件。

  • 简单的日志记录API(#1199) - 我们想要一个简单的方法来记录正在执行的SQL(就像Database.Log从EF6.x)。我们还需要一种简单的方法来查看正在记录的内容。

  • GroupBy翻译#2341 - 允许使用GroupBy()运算符翻译LINQ查询,该项目用于汇总要使用GROUP BY转换为SQL查询的函数。

原来考虑加入,但是至今没有加入计划的任务:

  • 基于ODBC的提供程序(#7432) - 这将允许为具有ODBC提供程序的数据库(但可能没有特定于数据库的ADO.NET提供程序)创建一个EF Core提供程序。 

 

写在最后

其实从路线图可以看出来,微软爸爸的整个构想是相当好的.

而且听取了很多社区中好的意见和建议(每个功能后面的"#一串数字",就是Github的Issues)

嗯,从EF4.0用EF一直到现在,也算是死忠粉了.最后说一下我个人比较关注的几个功能.

1.上下文池(#6923),这个太TM及时了..泪流满面啊..想想每次被人吐槽的初始化产生的性能损耗..想想..竟然还需要预热启动..,是不是有种拨开云雾见太阳的感觉..

2.EF.Functions.Like()(#2850) - 这个目前是只加入了like,后期还要加入更多的数据库函数.大大增强了代码可读性和效率

相关文章:

  • 一步步学习EF Core(1.DBFirst)

  • 一步步学习EF Core(2.事务与日志)

原文地址:http://www.cnblogs.com/GuZhenYin/p/6873397.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。

转载自 Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。 Docker简介 Docker是开源应用容器引擎,轻量级容器技术。 基于Go语言,并遵循Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移…

Build Tour 2017 中国站北京、上海报名了

微软于 5 月 10 日在总部西雅图举办的 Build 2017 大会上,发布了针对云计算、人工智能、Windows 以及混合现实平台等技术的一系列重要更新,这令众多来自企业、ISV、初创企业的开发者,学生开发者,以及技术爱好者兴奋不已。 为了帮助…

getOrDefault()和subList()

返回 key 相映射的的 value,如果给定的 key 在映射关系中找不到,则返回指定的默认值。

.NET Core类库项目中如何读取appsettings.json中的配置

这是一位朋友问我的问题,写篇随笔回答一下。有2种方法,一种叫丑陋的方法 —— IConfiguration ,一种叫优雅的方法 —— IOptions 。 1)先看丑陋的方法 比如在 RedisClient 中需要读取 appsettings.json 中的 redis 连接字符串&a…

js引擎执行代码的基本流程

js引擎执行代码的基本流程 先执行初始化代码: 包含一些特别的代码设置定时器绑定监听发送ajax请求后面在某个时刻才会执行回调代码

微服务框架下的思维变化-OSS.Core基础思路

如今框架两字已经烂大街了,xx公司架构设计随处可见,不过大多看个热闹,这些框架如何来的,细节又是如何思考的,相互之间的隔离依据又是什么...相信很多朋友应该依然存在自己的疑惑,特别是越来越火热的微服务以…

Spring Boot 2.x 启动全过程源码分析(全)

转载自 Spring Boot 2.x 启动全过程源码分析(全) 上篇《Spring Boot 2.x 启动全过程源码分析(一)入口类剖析》我们分析了 Spring Boot 入口类 SpringApplication 的源码,并知道了其构造原理,这篇我们继…

Vue 2017 现状与展望 | 视频+PPT+速记快速回顾

微软Typescript团队和VS Code团队亲自给Vue开发插件,下一个版本的Vue 2.4将由微软提供支持Vue使用Typescript,之前为VS Code写vue扩展插件的人已入职微软VS Code团队 讲师 | 尤雨溪 速记 | kalasoo 5 月 20 日,在全球首届 VueConf 上&#xf…

6 道 BATJ 必考的 Java 面试题

转载自 6 道 BATJ 必考的 Java 面试题 题目一 请对比 Exception 和 Error,另外,运行时异常与一般异常有什么区别? 考点分析: 分析 Exception 和 Error 的区别,是从概念角度考察了 Java 处理机制。总的来说&#…

终于知道什么情况下需要实现.NET Core中的IOptions接口

自从接触 IOptions 之后&#xff0c;一直纠结这样的问题&#xff1a;自己定义的 Options 要不要实现 IOptions 接口。 微软有的项目中实现了&#xff0c;比如 Caching 中的 MemoryCacheOptions &#xff1a; public class MemoryCacheOptions : IOptions<MemoryCacheOptio…

Amazing ASP.NET Core 2.0

前言 ASP.NET Core 的变化和发展速度是飞快的&#xff0c;当你发现你还没有掌握 ASP.NET Core 1.0 的时候&#xff0c; 2.0 已经快要发布了&#xff0c;目前 2.0 处于 Preview 1 版本&#xff0c;意味着功能已经基本确定&#xff0c;还没有学习过 ASP.NET Core 的同学可以直接…

Java面试常问计算机网络问题

转载自 Java面试常问计算机网络问题 一、GET 和 POST 的区别 GET请注意&#xff0c;查询字符串&#xff08;名称/值对&#xff09;是在 GET 请求的 URL 中发送的&#xff1a;/test/demo_form.asp?name1value1&name2value2 GET 请求可被缓存 GET 请求保留在浏览器历史…

使用DocFX生成文档

文档生成工具DocFX&#xff0c; 类似JSDoc或Sphinx&#xff0c;可以从源代码中提取注释生成文档之外&#xff0c;而且还有语法支持你加入其他的文件链接到API添加额外的说明&#xff0c;DocFX会扫描你的源代码和附加的文件为你生成一个完整的HTML模版网站&#xff0c;你可以自己…

如何在一分钟内搞定面试官

转载自 如何在一分钟内搞定面试官 很多人的求职面试的过程中都会遇到这个问题&#xff1a; “请做个自我介绍。” 有的人&#xff0c;可以口若悬河、妙语连珠讲3分钟&#xff0c;有的人&#xff0c;可能磕磕巴巴&#xff0c;讲了30秒&#xff0c;前者一定能胜过后者&#x…

基于ZKWeb + Angular 4.0的开源管理后台Demo

这是一套基于ZKWeb网页框架和Angular 4.0编写的开源管理后台Demo&#xff0c;实现了前后端分离和模块化开发&#xff0c; 地址是: https://github.com/zkweb-framework/ZKWeb.MVVMDemo &#xff0c;开源协议是MIT&#xff0c;你可以随意的修改并用于个人或商业用途 我之前已经…

祝我们的所有女孩子,女生节快乐~

公历3月7日是女生节。起源于20世纪90年代初&#xff0c;由山东大学发起&#xff0c;后发展于中国各高校&#xff0c;是一个关爱女生、展现高校女生风采的节日。女神节快乐祝我们18级青鸟1班的女孩儿们&#xff0c;女生节快乐&#xff01;愿快乐与你作陪&#xff0c;美丽将你跟随…

从 0 开始手写一个 Spring MVC 框架,向高手进阶

转载自 从 0 开始手写一个 Spring MVC 框架&#xff0c;向高手进阶 Spring框架对于Java后端程序员来说再熟悉不过了&#xff0c;以前只知道它用的反射实现的&#xff0c;但了解之后才知道有很多巧妙的设计在里面。如果不看Spring的源码&#xff0c;你将会失去一次和大师学习…

把Springboot项目部署到服务器上和结束运行

部署 nohup java -jar onlile-1.0.0-SNAPSHOT.jar &关闭 kill -9 22899 杀死 进程的pid &#xff0c;关闭程序。cat info.log 查看文件ps -ef | grep java 查看java 运行的几个进程 pid

CoreCLR源码探索(六) NullReferenceException是如何发生的

NullReferenceException可能是.Net程序员遇到最多的例外了, 这个例外发生的如此频繁,以至于人们付出了巨大的努力来使用各种特性和约束试图防止它发生, 但时至今日它仍然让很多程序员头痛, 今天我将讲解这个令人头痛的例外是如何发生的. 可以导致NullReferenceException发生的…