EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)

官方文档英文地址:https://github.com/aspnet/EntityFramework/wiki/Roadmap

历经延期和更名,新版本的实体框架终于要和大家见面了,虽然还有点害羞。请大家多体谅! 下面正式进入主题:

Entity Framework Core (EF Core)

  下面是EF Core 的计划和技术线路,注意,这些计划是可能发现变化的,因为很多事是很难预测的。即便如此,我们还是尽可能保持计划的公开和透明,以解大家对EF Core期望,以及做出相应的安排。

Schedule(时间表)

  发布初始版本的时间,我们计划是与ASP.NET Core 保持一致(ASP.NET Core 的发布时间请参考这里)(译注:方便大家查看,已把大家最关心的部分放在下面,最后一行就是EF Core 的发布时间 2016 年6年底)

  EF Core 与ASP.NET Core 不存在严密的挂钩(因为EF Core 在ASP.NET之外还有很多运用场景),但它是ASP.NET Core不可或缺的一部分,因此在发布ASP.NET Core时,我们必须提供一个稳定的EF Core 版本,这很重要!

Features(特性)

  因为EF Core 是一个新的代码库(译注:完全重写),因此,之前版已有的一些特性在EF Core中,不一定提供。基于此,我们列出了第一个版本已经实现和计划实现的特性。

  我们也列出了我们认为很重要的特性,但EF Core 初始版本并没实现 。也就是说,在这些特性没有在EF Core中实现时,EF6.x对于很多应用仍然是最好的选择

Core 1.0.0 Features

Implemented(已实现)

  下面列出的特性EF Core已经实现,并已经包含是官方的pre-release(预览版)。注意下面的特性也许还存在bug,提供的API也有可能会在正式版本中发生变化 ,因为我们还在为第一个稳定的版本而努力。

  • Modelling(建模)

    Basic modelling(基本建模) 基于POCO实体的get/set属性,支持来至BCL(基础类库)的基础类型(比如int, string 等);

    Built-in conventions (内建约定)  基于实体类构造一个初始模型;

    Fluent API (流式API)  允许你在上下中重写方法OnMedelCreating,以后进一步配置基于约定构建的模型;

    Data annotations(数据注解) 添加到实体类,属性头上的Attributes,它会影响EF模型(比如:添加[Required],它将让EF知道一个属性是必须提供的);

    TPH inheritance pattern(TPH 继承模式) 允许一个继承层次的类保存到数据的一个表中,通过数据库记录中的一个鉴别列来标识实体类型;

    Relationships(关系)  依赖于导航属性和外键属性的实体;

    Shadow state properties (影子属性) 没有相应的CLR类,但它是模型的一部分的属性;

    Alternate keys(替换键)    可以把关系指向一个替换键(译注:不是主键,但要保证唯一的列);

    Model validation (模型验证)  它能阻止模型中无效的模式并提供错误信息;

    Key value generation (键值生成)  包含用户自己生成和数据库生成两种模式;

    Relational: Table mapping(关系:表映射)   允许实体被映射到表或是列;

    

  • Change Tracking(变更跟踪)

    Snapshot change tracking(跟踪快照)  基于从数据库中获取的实体的原始值 ;

    Notification change tracking(通知跟踪变更)允许你的实体在属性值发生变更时通知变更跟踪器;

    Accessing tracked state(访问跟踪状态) 访问实体的状态(通过via DbContext.Entry 和 DbContext.ChangeTracker);

    Attaching detached entities/graphs    提供新的API DbContext.AttachGraph帮助你附加实例到上下文中,以便保存新创建或是变更后的实体;

  • SaveChanges(保存)

     Basic save functionality(基本的保存功能)  允许持久化一个实体的实例到数据库中;

     Optimistic Concurrency(乐观并发)   当另一个用户从数据库中获取数据后,如果你试图对该数据进行更改并提交,这将被阻止;

    Async SaveChanges (异步保存)    当数据库处理请求时,释放当前线程以处理别的请求;

    Transactions(事务)   意味着,SaveChanges总是一个原子操作(要么全部成功,要么对数据加做任何修改(回滚)),同时提供API,让两个不同的上下文实例共享事务;

    Relational: Batching of statements(关系数据库:批量语句)   通过在一次数据库请求中批量处理 INSERT/UPDATE/DELETE,来提供更好的性能;

  • Query(查询)

     Basic LINQ support (支持LINQ)  提供使用LINQ获取数据的能力;

    Mixed client/server evaluation      查询可以包含不能在数据库中求值的逻辑,它们必须在内存中进行求值;

    NoTracking   当你不需要对变化进行监视时(比如,获取的数据用于只读的场景),你可以关闭跟踪,以便更快的执行查询;

    Eager Loading(预先加载)   提供方法Include 和 ThenInclude来标识相关联的数据在查询时,一起被获取;

    Async Query (异步查询)  当数据库处理请求时,释放当前线程以处理别的请求;

    Raw SQL queries(SQL 语句查询)   提供方法DbSet.FromSql,使用SQL命令语句来查询数据,这些查询同样也能使用LINQ来实现 ;

  • Database schema management(数据库架构管理)    

    Database creation/deletion APIs   在不想使用migrations时,快速创建、删除数据库,用于测试;

    Relational database migrations   当模型发生变化时,允许关系弄数据库更新构架(schema);

    Reverse engineer from database   基于一个存在的数据库生成模型;

  • Database Providers

    EntityFramework.SqlServer  连接Microsoft SQL Server 2008及其以上的版本;

    EntityFramework.Sqlite 连接到SQLite3数据加;

    EntityFramework.InMemory 用于测试,连接时,不用连接到一个真正的数据库;

    Postgres 支持使用Npgsql开发;

    SQL Compact 支持使用 ErikEJ开发;

    

  • Platforms

    Full .NET 包含 Console, WPF,WinForms,ASP.NET4等;

    .NET Core(包含 ASP.NET Core) 目标是支持 Windwos,OSX,和Linux上运行的Full.NET 和.NET Core;

    Universal Windows Platform(UWP) 可以使用SQLite提供服务访问本地数据库;

In Progress(开发中)

  为发布1.0.0,我们正聚焦于下面的工作:

  •   Bug fixing(Bug修复)改进整体的代码质量和系统的可靠性;
  •   LINQ Provider Improvements(LINQ Provider改进) 增加LINQ成功查询的数量,提高LINQ翻译成SQL并在数据库中执行的效率;
  •   Performance improvemetns(性能改进) 解决性能瓶颈;
  •   Documentaton(文档)  正在整理相关的文档库
  •   IntelliSense documentation(智能感知文档) 使用Visula Studio开发应用是为你提供EF Core的上下文帮助(译注:智能感知提示);

Backlog Features(待开发特性)

  这不是一个详尽的列表,但列出来一些重要的且当前版本的EF Core还未实现的特性。

Critical O/RM Features(关键的O/RM 特性)

  下面列出这些特性实现后,我们将把EF Core作为EF中的推荐版本,特别是在EF6.x不能使用的地方(比如,UWP和.NET Core),但在没有实现前,很多应用的首选仍然是EF6.x;

  • Query(查询)

    Improved translation 能执行大量的查询,让更多的逻辑在数据进行求值,而不是在内存中;

    GroupBy translation 把LINQ GroupBy操作符分组的逻辑放到数据库去执行,而不是在内存中;

    Lazy loading 当访问导航属性时,自动从数据库获取数据;

    Explicit Loading 允许你提前加载实体的一个大数据量的导航属性;

    Raw SQL querys for non-Model types 允许你使用一个原生的SQL命令去填充一个非模型类型的对象(通常是非规范化的 view-model);

  • Database schema management(数据库架构管理)

    Visual Studio Wizard for reverse engineer 当你从数据库生成模型(译注:这里的模型是指code -first 模型)时,允许你可视化地配置连接、选择表、等等。

    Update model from database 当数据库架构发生变更时,允许你更新之前从数据库生成的模型;

  • Modelling(建模)

    Complex/value type(复杂类型/值类型) 表示实体的一个属性集,没有主键;

  • Change Tracking (变更跟踪)

    Missing EntityEntry APIs from EF6.x(EF6.x中缺少的的EntityEntry APIs) 比如 ReloadGetModifiedProperties,GetDatabaseValues 等等;

  • Relational specific(特殊关系)

    Stroed procedure maping(存储过程映射) 允许EF使用存储过程向数据库持久化更变(FromSql 方法已经提供了很好的支持);

    View mapping(视图映射)  允许EF 映射数据库视图;

    Connection resiliency (弹性连接) 自动重试在数据库中执行失败的命令,当你连接到SQL Azure时非常有用,在这种情况(连接到SQL Azure)失败是正常的。

High priority features(高优先级特性)

    在我们的待开发特性中,下面列出的这些特性具有较高的优先级,当然这也不可能是一个确切的列表。虽然他们还未实现,但这并不影响EF Core 成为令人激动的版本。

  • Modeling(建模)

    More flexible property mapping ( 更灵活的属性映射) 例如 构造函数参数,Get/Set方法,property bags 等;

    Visualizing a model  可视化一个基于Code-first模型的关系图;

    Simple type conversions(简单类型转换) 比如:string =>xml;

    Spatial data types(空间数据类型)例如:SQL Server‘s 中的geography 和geometry;

    Many-to-many relationships(多对多关系)在没有 join entity的情况下进行建模。你现在已经能使用一个join entity进行多对多有关系建模了;

    Alternate inheritance mapping patterns(可选的继承映射模式) 对于关系型数据库,比如TPT,TPC;

    

  • CRUD

    Seed data 允许一组数据很容易被插入(upserted);

    Etag-style concurrency token support;

    Eager loading rules 允许实体被查询时,与之关联的默认数据集总是被获取;

    Filtered loading 允许你加载实体对象的一个子集;

    Simple command interception 提供一种简单的方式,在命令发送到数据库前或后,对基进行读或写;

  • Proviers

    

    Azure Table Storage

    Redis

    Other non-relational databases(其它非关系弄数据库)

    

时间: 2024-10-11 08:29:16

EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)的相关文章

[转]EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)

本文转自:http://www.cnblogs.com/VolcanoCloud/p/5572408.html 官方文档英文地址:https://github.com/aspnet/EntityFramework/wiki/Roadmap 历经延期和更名,新版本的实体框架终于要和大家见面了,虽然还有点害羞.请大家多体谅! 下面正式进入主题: Entity Framework Core (EF Core) 下面是EF Core 的计划和技术线路,注意,这些计划是可能发现变化的,因为很多事是很难预测

在.net core程序中使用EntityFrameok(非EF Core)

最近用NoSQL较多写,用传统的EF到不多,但在一些.net core小程序中也小试牛刀过,不过当时用的是微软为.net core量身定制的Entity Framework Core,只是一些比较常规的增删改查,没有怎么深入使用,感觉差别不大.虽然知道EF Core是重新设计的,但觉得EF Core和EF在轻度使用上差别不大. 这两天打算计划重构一个老项目,想将其迁移到.net core上去.简单的试了一下,大部分的功能移植比较顺利,但却发现EF迁移到EF Core不是那么容易的事情,模型的关系

讨论过后而引发对EF 6.x和EF Core查询缓存的思考

前言 最近将RabbitMQ正式封装引入到.NET Core 2.0项目当中,之前从未接触过这个高大上的东东跟着老大学习中,其中收获不少,本打算再看看RabbitMQ有时间写写,回来后和何镇汐大哥探讨了一点关于EF和EF Core的内容,于是乎本文就出来了.EF 6.x和EF Core中的查询缓存想必大家都有耳闻或者了解,从数据库中查询出来的实体会形成快照在内存中Copy一份且被上下文跟踪,接下来我们要讲的内容就是这个,我们来看看. EF 6.x和EF Core查询缓存思考 首先我利用EF Co

[翻译] 介绍EF Core

Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍.原版地址. 是除了官方文档外另一个学习EF Core的不错途径, 书中由浅入深的讲解的EF Core的相关知识.因为没有中文版,所以本人对其进行翻译. 预计每两天一篇更新 PS: 翻译难免限于本人水平有不准确的地方,建议英文水平不错的同学直接查看原版,有不足的地方欢迎指正 第一部分目录导航

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 Framework Core 1.0 也已经发布了,可以适用于 .NET Core 1.0 及ASP.NET Core 1.0 . EF Core RC2 时,使用的Code First: http://www.cnblogs.com/linezero/p/EntityFrameworkCore.html E

ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查

原文:ASP.NET CORE系列[二]使用Entity Framework Core进行增删改查 介绍 EntityFrameworkCore EF core 是一个轻量级的,可扩展的EF的跨平台版本.对于EF而言 EF core 包含许多提升和新特性,同时 EF core 是一个全新的代码库,并不如 EF6 那么成熟和稳定.EF core 保持了和EF相似的开发体验,大多数顶级API都被保留了下来,所以,如果你用过EF6,那么上手EF core你会觉得非常轻松和熟悉,EF core 构建在一

ASP.NET Core中使用GraphQL - 第六章 使用EF Core作为持久化仓储

ASP.NET Core中使用GraphQL ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间件 ASP.NET Core中使用GraphQL - 第三章 依赖注入 ASP.NET Core中使用GraphQL - 第四章 GrahpiQL ASP.NET Core中使用GraphQL - 第五章 字段, 参数, 变量 本篇中我将演示如何配置持久化仓储,这里原文中是使用的Postgres, 这里我改用

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

EF Core 快速上手--EF Core 介绍 本章导航 从本书你能学到什么 对EF6.x 程序员的一些话 EF Core 概述 1.3.1 ORM框架的缺点 第一个EF Core应用 ??本文是对<Entity framework in action>部分章节的翻译,某些场景也会附上笔者实践的Demo.尽管很认真的斟酌,但是水平有限,还请各位批评和斧正. ??Entity Framework Core, 或者 EF Core,是一个方便软件工程师访问数据库的库.有很多方法来构建这样的一个库

【从0开始.NET CORE认证】-2 使用.Net Core Identity和EF Core

回顾 朋友们,距离上次从0开始.NET CORE认证-1发布已经过去一周了,上次第一篇文章,其实并没有涉及到Net Core Identity,就是简单的搭了一个项目,让大家对Identity中各种术语有个理解,明白他们出现的位置,已经他们出现能够达到某种功能.以及出现的位置顺序不同,则会出现什么不同的情况. 回顾一下上次写的主要的知识点 Authentication和Authorization 是什么,怎么解释他们 Claim和ClaimType又是什么,能举例子说明吗? ClaimsIden