原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/

翻译:杨晓东(Savorboard)

Entity Framework Core(EF Core)是一个轻量级的,可扩展和实体框架的跨平台版本。今天,我们宣布 Entity Framewor Core 1.1 正式可用了。

EF Core 和 .NET Core 遵循相同的发行周期。每2个月不断的改进和每6个月的新功能发布。这是自1.0的第一个功能版本。

请务必阅读位于这个帖子的末尾的升级到1.1这个章节,有相关升级到1.1版本重要信息。

1.1 版本有什么

1.1版本的重点是解决人们采用EF Core 中遇到的问题。这包括修正了bug,增加了一些的那些尚未在EF Core实现的重要功能。虽然我们已经取得了这方面的一些良好的进展,但是我们也承认EF Core 仍然不会是对大家来说最好的选择,更多详细信息可以看这篇 EF Core和EF6.x比较

Bug修复

在1.1版本有包含超过100个bug的修复。参见 EF Core 1.1 版本说明了解更多详情。

改进LINQ翻译

在1.1版本中,我们在提高Linq 对 EF Core 的支持取得了良好的进展。这使得更多的查询成功执行,有更多的逻辑在数据库进行执行(而不是在内存中)。

DbSet.Find

DbSet.Find(...)是存在于EF6.x并在 EF Core 中比较常见的一个 API。它可以让你方便地查询基于其主键值的实体。如果实体已经加载到上下文,则它直接返回而不再次查询数据库。

using (var db = new BloggingContext())
{
var blog = db.Blogs.Find(1);
}

映射字段

新的流式API HasField(...) 方法 允许你在属性中配置一个数据库不同名字的字段。

这对于只读属性是非常有用的,而不是一个 get / set的属性。有关详细的指导,请参阅我们的文档中的Backing Field相关文章。

public class BloggingContext : DbContext
{
... protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.Property(b => b.Url)
.HasField("_validatedUrl");
}
}

显式加载

显式加载允许您加载DBContext上下文中跟踪到的实体的导航属性里面的内容。欲了解更多信息,请参见我们的文档中的加载相关数据文章。

using (var db = new BloggingContext())
{
var blog = db.Blogs.Find(1); db.Entry(blog).Collection(b => b.Posts).Load();
db.Entry(blog).Reference(b => b.Author).Load();
}

从 EF6.x 增加的 EntityEntry的API

我们已经加入在EF6.x.是可用的但是还没有添加到 EF Core 中的EntityEntry的相关 API, 这包括 Reload(), GetModifiedProperties(), GetDatabaseValues() 等。这些API一般通过 DbContext.Entry(object entity) 调用。

弹性连接

弹性连接将会自动重试失败的数据库命令。SQL Server提供了一个专门针对SQL Server的执行策略(包括SQL Azure的)。识别到异常类型,可以重试并且为最大重试设置合理的默认值,重试之间的延迟等。更多信息,可以在我们的文档请参阅弹性连接的文章。

其实一个就是给你的数据库上下文配置执行策略,在 ASP.NET Core 应用程序中,通常情况下是在 OnConfiguring方法中,或者是在 Startup.cs 里面。

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseSqlServer(
"connection string",
options => options.EnableRetryOnFailure());
}

支持 SQL Server 内存优化表

内存优化表是SQL Server 2014+ 的功能。现在,您可以指定一个实体映射到内存优化表。欲了解更多信息,请参阅我们的文档中的内存优化表文章。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.ForSqlServerIsMemoryOptimized();
}

简化 service 替换

在EF Core 1.0中你可以取代EF使用其内部服务,但这是很复杂的,需要你拿到 EF依赖注入容器的控制权来使用。在1.1中,这个要简单得多。在配置上下文时候使用ReplaceService(...) 方法就行了。在 ASP.NET Core 应用程序中,这通常是在Startup.cs 文件中的 OnConfiguring(...) 方法中。

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("connection string"); optionsBuilder.ReplaceService<SqlServerTypeMapper, MyCustomSqlServerTypeMapper>();
}

升级到1.1

如果您正在使用的EF团队提供的连接数据库的程序包(SQL Server, SQLite, InMemory),那就升级提供的程序包就行了。

PM> Update-Package Microsoft.EntityFrameworkCore.SqlServer

如果您使用的是第三方数据库提供程序,检查一下看看他们是否已经发布新版本,它取决于1.1.0更新。如果他们有,那么就升级到新版本。如果没有, 那么你应该能够升级他们依赖的EF Core Relational 组件。大部分的新特性数据库组件提供者在1.1不需要修改。我们已经做了一些测试,以确保数据库提供商依赖1.0和1.1,但没有做详尽的测试。

PM> Update-Package Microsoft.EntityFrameworkCore.Relational

升级工具包

如果您正在使用Tools 工具包,那肯定就要升级了。需要注意的是Tools版本为 1.1.0-preview4 因为Tools还没有达到其稳定版本。

PM> Update-Package Microsoft.EntityFrameworkCore.Tools -Pre

如果你在使用 ASP.NET Core,使用dotnet ef命令,那么你需要更新 project.json 的Tools部分使用新 Microsoft.EntityFrameworkCore.Tools.DotNet 包取代 Microsoft.EntityFrameworkCore.Tools 1.0 的包。由于.NET Cli,所以对我们来说分离dotnet ef到这个单独的包已经是必要的了。

json
"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4"
},

本文地址:http://www.cnblogs.com/savorboard/p/efcore11-announcing.html

作者博客:Savorboard

欢迎转载,请在明显位置给出出处及链接

Entity Framework Core 1.1 升级通告的更多相关文章

  1. Entity Framework Core 1.1 Preview 1 简介

    实体框架核心(EF Core)是Entity Framework的一个轻量级,可扩展和跨平台版本. 10月25日,Entity Framework Core 1.1 Preview 1发布了. 升级到 ...

  2. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio »迁移

    Migrations¶ 4 of 4 people found this helpful The Contoso University sample web application demonstra ...

  3. .Net Core 2.0生态(4):Entity Framework Core 2.0 特性介绍和使用指南

    前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升级EF也发展到EF6.x,Entity Framework Core是一个支持跨平台的全新版本, ...

  4. Entity Framework Core 入门(2)

    安装 EF Core 将 EF Core 添加到不同平台和常用 IDE 中的应用程序的所需步骤汇总. 分步入门教程 无需具备 Entity Framework Core 或任何特定 IDE 的原有知识 ...

  5. 【EF】Entity Framework Core 2.0 特性介绍和使用指南

    阅读目录 前言 获取和使用 新特性 项目升级和核心API变化 下一步计划 遗憾的地方 回到目录 前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升 ...

  6. .NET Core学习笔记(8)——Entity Framework Core之Database First

    曾经我以为再也不会去弄啥Database First,然鹅我错了.这个世界上就是有啪啪打脸和真香的时候.当小伙伴拿着做好的DB表结构和SQL脚本递过来的时候,我知道我没法拒绝.望着他突起的肱二头肌和充 ...

  7. .NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite

    上一篇我们梳理了CodeFist的一般流程,本篇我们讨论如何在一套代码中,支持SQL Server和SQLite的切换.同时从本篇开始,我们从.NET Core 3.1 迁移到.NET 5.相信.NE ...

  8. 001从零开始入门Entity Framework Core——基础知识

    Entity Framework (EF) Core 是轻量化.可扩展.开源和跨平台版的常用 Entity Framework 数据访问技术. 一.什么是 Entity Framework Core ...

  9. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

    将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...

随机推荐

  1. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  2. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  3. 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序

    直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...

  4. .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?如何改进?

    物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...

  5. WebApi - 路由

    这段时间的博客打算和大家一起分享下webapi的使用和心得,主要原因是群里面有朋友说希望能有这方面的文章分享,随便自己也再回顾下:后面将会和大家分不同篇章来分享交流心得,希望各位多多扫码支持和点赞,谢 ...

  6. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

  7. react入门参考资料--step by step

    ReactJS简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出 ...

  8. 张高兴的 UWP 开发笔记:横向 ListView

    ListView 默认的排列方向是纵向 ( Orientation="Vertical" ) ,但如果我们需要横向显示的 ListView 怎么办? Blend for Visua ...

  9. java统计字符串单词的个数

    在一些项目中可能需要对一段字符串中的单词进行统计,我在这里写了一个简单的demo,有需要的同学可以拿去看一下. 本人没怎么写个播客,如果有啥说的不对的地方,你来打我啊 不说废话了直接贴代码: 实现代码 ...

  10. 【读书】PHP程序员要读的书目(不断完善中)

    本文地址 分享提纲: 1. PHP 2. Linux 3. Apache/Nginx 4. Mysql 5.设计模式/架构 6. 缓存并发 7. 其他语言 8. 代码基础 9. 大前端 10. 管理生 ...