【譯】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.0-preview.5.20278.2

  可以將此新版本的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(2) [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

原文鏈接

  https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-5-0-preview-5/?utm_source=vs_developer_news&utm_medium=referral

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

聚甘新

您可能也會喜歡…