今天我们宣布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://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-5-0-preview-5/?utm_source=vs_developer_news&utm_medium=referral

【译】Announcing Entity Framework Core 5.0 Preview 5的更多相关文章

  1. Entity Framework Core 1.1 Preview 1 简介

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

  2. Entity Framework Core 2.0 全局查询过滤器

    不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: http://gunnarpeipman.com/2017/08/ef ...

  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.0 中使用LIKE 操作符

    Entity Framework Core 2.0 中使用LIKE 操作符 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译 ...

  5. Entity Framework Core 2.0 使用代码进行自动迁移

    一.前言 我们在使用EF进行开发的时候,肯定会遇到将迁移更新到生产数据库这个问题,前面写了一篇文章介绍了Entity Framework Core 2.0的入门使用,这里面介绍了使用命令生成迁移所需的 ...

  6. ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题.

    在ASP.Net Core 2.0的项目里, 我使用Entity Framework Core 2.0 作为ORM. 有人习惯把数据库的连接字符串写在appSettings.json里面, 有的习惯写 ...

  7. 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    将 ...

  8. [转帖]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 ...

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

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

随机推荐

  1. css实现手机端导航栏左右滑动

    <html> <head> <meta charset="utf-8"> <meta name="viewport" ...

  2. Js 改变时间格式输出格式

    朋友看到的方法,非js原生的 自己封装到 function date2str(x,y) { var z={y:x.getFullYear(),M:x.getMonth()+1,d:x.getDate( ...

  3. 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理

    上一篇文章(https://www.cnblogs.com/meowv/p/12956696.html)成功使用了Redis缓存数据,大大提高博客的响应性能. 接下来,将完成一个任务调度中心,关于定时 ...

  4. 3.key的操作

    我们之前使用Redis简单存储了三个参数: 在语句set name jack中,其中name就是一个key.我们Java中的变量名是有一定规则的,比如组成内容可以是“数字”,“字母”以及“下划线”. ...

  5. MP4视频流base64数据转成Blob对象

    网上一大堆对图片base64转Blob.File的方法 很少有视频mp4转的,可能是因为原理相同的原因吧!但在项目中针对视频流base64转Blob对象时,花了好长时间才成功,特专门记录一下! APP ...

  6. Linux以指定用户非root用户运行程序、进程

    方式一: 使用su命令切换用户运行 su 用户名 方式二: useradd -s /sbin/nologin -M test   -s /sbin/nologin表示创建一个禁止登陆的用户(比如www ...

  7. 学习使用re做解析器爬小说

    一.背景:近期学习python爬虫中看到,在对网页内容进行解析的技术中,re正则表达式工具也是一个很好的工具,使用re编制爬虫工具正好熟悉re正则表达式的使用. 二.环境及爬取目标 1.linux c ...

  8. “造轮运动”之 ORM框架系列(一)~谈谈我在实际业务中的增删改查

    想想毕业已经快一年了,也就是大约两年以前,怀着满腔的热血正式跨入程序员的世界,那时候的自己想象着所热爱的技术生涯会是多么的丰富多彩,每天可以与大佬们坐在一起讨论解决各种牛逼的技术问题,喝着咖啡,翘着二 ...

  9. Java并发编程 (二) 并发基础

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.CPU多级缓存-缓存一致性 1.CPU多级缓存 ​ 上图展示的是CPU高级缓存的配置,数据的读取和存 ...

  10. ASP.NET中LINQ的基本用法

    此Demo只是一个极其简单的LINQ查询Demo 一个类 using System; using System.Collections.Generic; using System.Linq; usin ...