Entity Framework Core 1.1 升级通告
原文地址: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 升级通告的更多相关文章
- Entity Framework Core 1.1 Preview 1 简介
实体框架核心(EF Core)是Entity Framework的一个轻量级,可扩展和跨平台版本. 10月25日,Entity Framework Core 1.1 Preview 1发布了. 升级到 ...
- 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 ...
- .Net Core 2.0生态(4):Entity Framework Core 2.0 特性介绍和使用指南
前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升级EF也发展到EF6.x,Entity Framework Core是一个支持跨平台的全新版本, ...
- Entity Framework Core 入门(2)
安装 EF Core 将 EF Core 添加到不同平台和常用 IDE 中的应用程序的所需步骤汇总. 分步入门教程 无需具备 Entity Framework Core 或任何特定 IDE 的原有知识 ...
- 【EF】Entity Framework Core 2.0 特性介绍和使用指南
阅读目录 前言 获取和使用 新特性 项目升级和核心API变化 下一步计划 遗憾的地方 回到目录 前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升 ...
- .NET Core学习笔记(8)——Entity Framework Core之Database First
曾经我以为再也不会去弄啥Database First,然鹅我错了.这个世界上就是有啪啪打脸和真香的时候.当小伙伴拿着做好的DB表结构和SQL脚本递过来的时候,我知道我没法拒绝.望着他突起的肱二头肌和充 ...
- .NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite
上一篇我们梳理了CodeFist的一般流程,本篇我们讨论如何在一套代码中,支持SQL Server和SQLite的切换.同时从本篇开始,我们从.NET Core 3.1 迁移到.NET 5.相信.NE ...
- 001从零开始入门Entity Framework Core——基础知识
Entity Framework (EF) Core 是轻量化.可扩展.开源和跨平台版的常用 Entity Framework 数据访问技术. 一.什么是 Entity Framework Core ...
- Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...
随机推荐
- C++实现线程安全的单例模式
在某些应用环境下面,一个类只允许有一个实例,这就是著名的单例模式.单例模式分为懒汉模式,跟饿汉模式两种. 首先给出饿汉模式的实现 template <class T> class sing ...
- .NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]
构造函数.析构函数 构造函数: 语法: //无参的构造函数 [访问修饰符] 函数名() :函数名必须与类名相同. //有参的构造函数 [访问修饰符] 函数名(参数列表):函数名必须与类名相同. 作用: ...
- 协议森林17 我和你的悄悄话 (SSL/TLS协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...
- 用神奇的currentColor制作简洁的颜色动画效果
先上一个兼容性总结图:老版本ie可以直接用复杂方法了,套用某表情包的话: 2016年了,做前端你还考虑兼容IE6?你这简直是自暴自弃! 好了,知道了兼容性,我们可以放心的使用了. 在CSS3中扩展了 ...
- winform异步加载数据到界面
做一个学习记录. 有两个需求: 1.点击按钮,异步加载数据,不卡顿UI. 2.把获取的数据加载到gridview上面. 对于需求1,2,代码如下: public delegate void ShowD ...
- Windows下Visual studio 2013 编译 Audacity
编译的Audacity版本为2.1.2,由于实在windows下编译,其源代码可以从Github上取得 git clone https://github.com/audacity/audacity. ...
- javascript 笔记!
1.通过javascript向文档中输出文本 document是javascript的内置对象,代表浏览器的文档部分 document.write("Hello Javascript&quo ...
- Javascript中的valueOf与toString
基本上,javascript中所有数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下. t ...
- SAP CRM 显示消息/在消息中进行导航
向用户展示消息,在任何软件中都是十分重要的. 在SAP CRM WEB UI中展示消息,不是一项很难的任务,只需要创建消息并在之后调用方法来显示它 消息类和消息号: 我在SE91中创建了如下的消息类和 ...
- git &github 快速入门
本节内容 github介绍 安装 仓库创建& 提交代码 代码回滚 工作区和暂存区 撤销修改 删除操作 远程仓库 分支管理 多人协作 github使用 忽略特殊文件.gitignore 1.gi ...