博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Entity Framework Core 1.1 升级通告
阅读量:7217 次
发布时间:2019-06-29

本文共 3304 字,大约阅读时间需要 11 分钟。

原文地址:

翻译:

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 仍然不会是对大家来说最好的选择,更多详细信息可以看这篇 。

Bug修复

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

改进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的属性。有关详细的指导,请参阅我们的文档中的相关文章。

public class BloggingContext : DbContext{    ...    protected override void OnModelCreating(ModelBuilder modelBuilder)    {        modelBuilder.Entity
() .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
() .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
();}

升级到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" },

本文地址:

作者博客:
欢迎转载,请在明显位置给出出处及链接

你可能感兴趣的文章
javascript数组顺序-----1冒泡的另一种比较好理解的写法
查看>>
数据结构-栈的实现之行编译器核心实现
查看>>
C++ Project 积累(2)
查看>>
(1)用VisualSvn Server,Tortoise Svn,AnkhSvn搭建Svn版本控制
查看>>
Mysql索引
查看>>
格式化输出
查看>>
hdu 3804 Query on a tree (树链剖分+线段树)
查看>>
定位、指南针、地理编码
查看>>
Kafka 简介
查看>>
MySQL 用户连接与用户线程
查看>>
RabbitMq、ActiveMq、Kafka和Redis做Mq对比
查看>>
C# 图片处理(压缩、剪裁,转换,优化)
查看>>
Linux bridge-utils tunctl 使用
查看>>
Leetcode Pascal's Triangle II
查看>>
运行shell脚本报错 '\357\273\277': command not found 解决的方法
查看>>
android studio 0.8.1使用和遇到问题解决
查看>>
云服务器ECS选购集锦之六区域选择帮助
查看>>
云虚机选购指南之二云虚拟主机试用帮助文档
查看>>
女友眼中的IT男
查看>>
Excel连接
查看>>