前言

这几天一直在研究EF Core的官方文档,暂时没有发现什么比较新的和EF6.x差距比较大的东西.

不过我倒是发现了EF Core的路线图更新了,下面我们就来看看

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

正文

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

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

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

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

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

1.时间表

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

发布版本 发布季度
2.0- preview1 2017年第2季度
2.0- preview2 2017年第2季度
2.0 2017年第3季度
2.1 2017年第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 预览版本中的全局查询过滤器已经解决了这一点
    • 简单的命令拦截提供了在发送到数据库之前/之后读取/写入命令的简单方法。
  • 更多的数据库支持

    • Azure Table Storage
    • Redis
    • 其他非关系型数据库
  • 平台

    • 通用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(3.EF Core2.0路线图)的更多相关文章

  1. [翻译 EF Core in Action 2.0] 查询数据库

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  2. 深入理解 EF Core:EF Core 读取数据时发生了什么?

    阅读本文大概需要 11 分钟. 原文:https://bit.ly/2UMiDLb 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能 ...

  3. 深入理解 EF Core:EF Core 写入数据时发生了什么?

    阅读本文大概需要 14 分钟. 原文:https://bit.ly/2C67m1C 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能 ...

  4. NET5 EF Core添加EF生成SQL日志记录

    1.添加NuGet包:Microsoft.Extensions.Logging.Debug 2.添加单独类库用于后期维护:BCode.DataBase.Log 3.添加EFCoreLoggerProv ...

  5. 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.解压后打开解决方案,解决方案目录: ...

  6. [翻译] EF Core in Action 关于这本书

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  7. [翻译] 介绍EF Core

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  8. [翻译] EF Core 概述

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  9. EF Core 快速上手——EF Core 入门

    EF Core 快速上手--EF Core 介绍 本章导航 从本书你能学到什么 对EF6.x 程序员的一些话 EF Core 概述 1.3.1 ORM框架的缺点 第一个EF Core应用   本文是对 ...

随机推荐

  1. spring security 3.x 多页面登录配置入门教程

    最近在最shiro的多入口登录,搞了好久,就把spring security拿出来再炒一下,这是我以前在csdn写过的一篇博客. spring security 是一个权限控制的框架.可以很方便地实现 ...

  2. 解决vagrant up启动失败,停留在Booting VM...过程的方法

    如图,这种情况是因为没有正确关闭虚拟机导致的,关闭时应在命令行使用vagrant halt 命令,如果直接关机便会出现这种情况. 解决办法:直接启动VirtualBox,并在命令行vagrant ha ...

  3. 翻译一篇文章:It's Difficult to Grow a Test Developer(成为测试开发工程师的艰辛)

    翻译一篇文章:It's Difficult to Grow a Test Developer(成为测试开发工程师的艰辛)   以下文章是送给来poptest学习测试开发工程师的学员们,很多人想测试工程 ...

  4. Java面试题:Servlet是线程安全的吗?

    Servlet不是线程安全的. 要解释为什么Servlet为什么不是线程安全的,需要了解Servlet容器(即Tomcat)使如何响应HTTP请求的. 当Tomcat接收到Client的HTTP请求时 ...

  5. 准备要开始写博客啦~Hello World

    Hello World 新的开始 加油咯 小蚊子~

  6. Java中利用BigInteger类进行大数开方

    在Java中有时会用到大数据,基本数据类型的存储范围已经不能满足要求了,如要对10的1000次方的这样一个数据规模的数进行开方运算,很明显不能直接用Math.sqrt()来进行计算,因为已经溢出了. ...

  7. com.android.ide.common.process.PrecessException:org.gradle.process....finished with non-zero exit value 1

    1.问题描述: 如图,在生成apk文件时出现如下错误, 2.原因分析: 我在网上搜了很多类似的问题,但试了又试也没有解决.然后我想上次编译时都没有出错,应该是最近的操作导致的错误. 3.解决办法: 把 ...

  8. web前端概念巩固(一)

    h5: 1.web语义化 Web语义化是指在进行HTML结构.表现.行为设计时,尽量使用语义化的标签,使程序代码简介明了,易于进行Web操作和网站SEO,方便团队协作的一种标准,以图实现一种" ...

  9. iptables配置详解

    iptables主要参数 -A 向规则链中添加一条规则,默认被添加到末尾 -T指定要操作的表,默认是filter -D从规则链中删除规则,可以指定序号或者匹配的规则来删除 -R进行规则替换 -I插入一 ...

  10. [Linux] PHP程序员玩转Linux系列-telnet轻松使用邮箱

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...