【译】Announcing Entity Framework Core 5.0 Preview 5
今天我们宣布EF Core 5.0发布第五个预览版。
1 先决条件
EF Core 5.0 的预览版要求 .NET Standard 2.1。这意味着:
EF Core 5.0 在 .NET Core 3.1 上运行,不需要 .NET 5。根据 .NET 5 计划的改变,这可能会在未来发生变化。
EF Core 5.0 运行在其他支持 .NET Standard 2.1 的平台上。
EF Core 5.0 将不会在 .NET Standard 2.0 平台上运行,包括 .NET Framework。
2 如何获取EF Core 5.0预览版
使用NuGet添加,例如添加SQL Server的提供程序:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 5.0.0-preview.5.20278.2
目前发布的 EF Core包包括:
Microsoft.EntityFrameworkCore – 主程序
Microsoft.EntityFrameworkCore.SqlServer – SQL Server与SQL Azure提供者
Microsoft.EntityFrameworkCore.Sqlite – SQLite提供者
Microsoft.EntityFrameworkCore.Cosmos – Azure Cosmos DB提供者
Microsoft.EntityFrameworkCore.InMemory – 内存数据库提供者
Microsoft.EntityFrameworkCore.Tools –Visual Studio Package Manager Console的 EF Core PowerShell命令
Microsoft.EntityFrameworkCore.Design – EF Core的设计时组件
Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite – SQL Server 空间类型支持
Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite – SQLite空间类型支持
Microsoft.EntityFrameworkCore.Proxies –延迟加载与变化跟踪代理
Microsoft.EntityFrameworkCore.Abstractions – 分离的EF Core抽象
Microsoft.EntityFrameworkCore.Relational – 关系数据库提供程序的共享EF Core组件
Microsoft.EntityFrameworkCore.Analyzers – EF Core的C#分析器
Microsoft.EntityFrameworkCore.Sqlite.Core – SQLite提供者(没有打包的本机二进制文件)
我们还发布了Microsoft.Data.Sqlite.Core ADO.NET provider的预览版。
3 安装dotnet ef
与EF Core 3.0和3.1一样,dotnet EF命令行工具不再包含在.NET Core SDK中。在执行EF Core的migration或scaffolding命令之前,必须将此包作为全局或本地工具安装。

若要全局安装预览版工具,需要先使用以下命令卸载现有的版本:
dotnet tool uninstall --global dotnet-ef
然后,进行安装:
dotnet tool install --global dotnet-ef --version 5.0.-preview.5.20278.
可以将此新版本的dotnet ef与使用较旧版本的EF Core运行时的项目一起使用。
4 EF Core 5.0预览版的一些新功能
4.1 数据库排序规则
现在可以在 EF Model中指定数据库的默认排序规则。
modelBuilder.UseCollation("German_PhoneBook_CI_AS");
然后,Migrations将生成以下内容以在 SQL Server 上创建数据库:
CREATE DATABASE [Test]
COLLATE German_PhoneBook_CI_AS;
也可以指定用于特定数据库列的排序规则。
例如:
modelBuilder
.Entity<User>()
.Property(e => e.Name)
.UseCollation("German_PhoneBook_CI_AS");
为了那些不使用migration的人,现在,在 DbContext scaffolding时,将从数据库进行反向工程。最后,EF.Functions.Collate() 允许使用不同的排序规则进行临时查询。
例如:
context.Users.Single(e => EF.Functions.Collate(e.Name, "French_CI_AS") == "Jean-Michel Jarre");
这将生成 SQL Server 的以下查询:
SELECT TOP() [u].[Id], [u].[Name]
FROM [Users] AS [u]
WHERE [u].[Name] COLLATE French_CI_AS = N'Jean-Michel Jarre'
请注意,临时排序规则应谨慎使用,因为它们会对数据库性能产生负面影响。
4.2 传递参数给IDesignTimeDbContextFactory
参数现在从命令行传入IDesignTimeDbContextFactory 的 CreateDbContext 方法。
例如,为了指示这是开发构建,可以在命令行上传递自定义参数(例如 dev):
dotnet ef migrations add two --verbose --dev
然后,此参数将传递到工厂:
public class MyDbContextFactory : IDesignTimeDbContextFactory<SomeDbContext>
{
public SomeDbContext CreateDbContext(string[] args)
=> new SomeDbContext(args.Contains("--dev"));
}
4.3 具有标识解析的无跟踪查询
现在,可以将无跟踪查询配置为执行标识解析。
例如,以下查询将为每个Post创建新的Blog实例,即使每个Blog具有相同的主键也是如此。
context.Posts.AsNoTracking().Include(e => e.Blog).ToList();
但是,可以更改此查询以确保只创建单个 Blog 实例,但代价通常是稍微慢一点,并且使用更多内存:
context.Posts.AsNoTracking().PerformIdentityResolution().Include(e => e.Blog).ToList();
请注意,这仅适用于无跟踪查询,因为所有跟踪查询都已表现出此行为。
4.4 持久化计算列
大多数数据库允许在计算后存储计算列的值。
虽然这占用磁盘空间,但计算列在更新时只计算一次,而不是在每次检索其值时计算。
这还允许对某些数据库的列设置索引。
EF Core 5.0 允许将计算列配置为存储列。
例如:
modelBuilder
.Entity<User>()
.Property(e => e.SomethingComputed)
.HasComputedColumnSql("my sql", stored: true);
4.5 SQLite计算列
EF Core 现在支持 SQLite 数据库的计算列。
5 有用的短链接
提供了以下短链接,便于参考和访问。
- 主要文档:https://aka.ms/efdocs
- EF Core 的问题和功能请求:https://aka.ms/efcorefeedback
- EF路线图:https://aka.ms/efroadmap
- EF Core 5.x 中的新增功能是什么:https://aka.ms/efcore5
原文链接
【译】Announcing Entity Framework Core 5.0 Preview 5的更多相关文章
- Entity Framework Core 1.1 Preview 1 简介
实体框架核心(EF Core)是Entity Framework的一个轻量级,可扩展和跨平台版本. 10月25日,Entity Framework Core 1.1 Preview 1发布了. 升级到 ...
- Entity Framework Core 2.0 全局查询过滤器
不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: http://gunnarpeipman.com/2017/08/ef ...
- .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.0 中使用LIKE 操作符
Entity Framework Core 2.0 中使用LIKE 操作符 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译 ...
- Entity Framework Core 2.0 使用代码进行自动迁移
一.前言 我们在使用EF进行开发的时候,肯定会遇到将迁移更新到生产数据库这个问题,前面写了一篇文章介绍了Entity Framework Core 2.0的入门使用,这里面介绍了使用命令生成迁移所需的 ...
- ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题.
在ASP.Net Core 2.0的项目里, 我使用Entity Framework Core 2.0 作为ORM. 有人习惯把数据库的连接字符串写在appSettings.json里面, 有的习惯写 ...
- ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0
ASP.NET 5.0 将改名为 ASP.NET Core 1.0 ASP.NET MVC 6 将改名为 ASP.NET MVC Core 1.0 Entity Framework 7.0 将 ...
- [转帖]2016年时的新闻:ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0
ASP.NET Core 1.0.ASP.NET MVC Core 1.0和Entity Framework Core 1.0 http://www.cnblogs.com/webapi/p/5673 ...
- 【EF】Entity Framework Core 2.0 特性介绍和使用指南
阅读目录 前言 获取和使用 新特性 项目升级和核心API变化 下一步计划 遗憾的地方 回到目录 前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升 ...
随机推荐
- OAUTH开放授权
OAUTH开放授权 OAUTH开放授权为用户资源的授权提供了一个安全的.开放而又简易的标准.OAUTH的授权不会使第三方触及到用户的帐号信息例如用户名与密码等,即第三方无需使用用户的用户名与密码就可以 ...
- [工具-008] C#邮件发送系统
邮件发送系统很多,但是我这边给大家展示下我最近开发的一款邮件发送系统,有参照网上的一个兄弟的界面,进行了升级,界面如下. 从界面上我们可以看到了该邮件系统有如下功能: 1)服务器的设置 2)发件人的设 ...
- 机器学习pdf资源
<深度学习>(Deep Learning)中文版pdf, 百度网盘: https://pan.baidu.com/s/1jHDiQTg <机器学习导论>(Introductio ...
- 是时候扔掉cmder, 换上Windows Terminal
作为一个Windows的长期用户,一直没有给款好用的终端,知道遇到了 cmder,它拯救一个习惯用Windows敲shell命令的人. 不用跟我安利macOS真香!公司上班一直用macOS,一方面确实 ...
- xxshenqi分析报告
背景 今年七夕爆发了一场大规模手机病毒传播,apk的名字叫做xxshenqi.中了这个病毒的用户会群发手机所有联系人一条信息,内容是包含这个apk下载的链接,同时用户的联系人信息和短信会被窃取,造成隐 ...
- Rocket - jtag - JtagTap
https://mp.weixin.qq.com/s/0u9jM2u-FkTlrk3QNuZaBw 简单介绍JtagTap的实现. 1. 简单介绍 定义TAP(Test Access Port)所需要 ...
- Rocket - diplomacy - enumerateBits
https://mp.weixin.qq.com/s/KsZqe9W_DM6W6JecK_irvA 介绍AddressSet.enumerateBits方法的实现,主要是x & (-x)的 ...
- Spring-boot01
本文记录Spring-Boot学习途中的点点滴滴. 其实Spring-Boot出来好长时间了,但是一直没去关注过.之前在我的印象里Spring-Boot好就好在减去了很多XML配置,加入了很多自动配置 ...
- JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重 ...
- Linux (四) 基础命令 下
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.查看文件内容 1.命令 cat 对应单词:concatenate 作用:查看文件内容 常用参数: ...