請查收最新的 EF Core 7.0 更新

關注我們

作者:Jeremy Likness

排版:Rani

近期.NET 數據團隊宣布了?EF Core 7.0 (EF7)的第四個預覽版。除了bug修復和更大功能的基礎工作外,此預覽版還包括以確保轉換器和比較器由類型映射處理,并支持將轉換器與值生成器一起使用。請務必閱讀?EF7 的完整計劃以了解路線圖上的內容。

EF Core 7.0 (EF7)

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.0-preview.4.22229.2

轉換器和比較器由類型映射處理

https://github.com/dotnet/efcore/issues/17962

將轉換器與值生成器一起使用

https://github.com/dotnet/efcore/issues/11597

EF7 的完整計劃

https://docs.microsoft.com/ef/core/what-is-new/ef-core-7.0/plan

領域驅動設計和“受保護”密鑰

領域驅動設計 (DDD) 的其中一種模式是使用值對象作為鍵的概念。換句話說,而不是像這樣聲明一個鍵:

public class Thing
{public int Id { get; set; }
}

它可能看起來像這樣:

public class Thing
{public ThingKey Id { get; set; }
}public class ThingKey
{public ThingKey(Func<int> generator) => Id = generator();  public ThingKey(int id) => Id = id;public int Id { get; private set; }
}

這樣做有幾個好處。第一個也是最明顯的一點是它隱藏了密鑰的實現細節。如果您決定更喜歡使用 GUID 的無限資源,而不是更有限和無聊的可用整數的順序集,那么由于鍵類提供的緩沖區,您的重構將更加容易。您還可以通過驗證保護密鑰免受不良數據的影響,這樣就沒人可以分配負值。說到意外,你有沒有將錯誤的 id 作為一個鍵傳遞給一個方法?對編譯器而已是不在乎的,因為它都是整數……或字節……或 1 和 0……但如果您使用強類型鍵,您將被迫提供合適的鍵。否則,編譯器會抱怨。

是否使用此方法當然取決于您,但在預覽版 4 之前,EF Core 中的選擇還是有限的。從實體轉換為標量的最明顯方法是使用轉換器,但如果您嘗試將轉換器分配給標記為生成值的屬性,EF Core 會拋出異常。該約束已被解除,更重要的是,更新了代碼以確保正確處理此案例。讓我們知道您是否正在使用此功能以及它如何為您工作!

先決條件

  • EF7 當前面向 .NET 6。隨著我們即將發布,它可能會更新到 .NET 7。

  • EF7 不會在 ? ? ?.NET Framework 上運行。

EF7 是 EF Core 6.0 的繼承者,不要與 EF6?混淆。如果您正在考慮從 EF6 升級,請閱讀我們的從?EF6 移植到 EF Core?的指南。

混淆

https://github.com/dotnet/ef6

EF6 移植到 EF Core

https://docs.microsoft.com/ef/efcore-and-ef6/porting/

如何獲得 EF7 預覽

EF7 僅作為一組 NuGet 包分發。例如,要將 SQL Server 提供程序添加到您的項目中,您可以通過 dotnet 工具使用以下命令:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 7.0.0-preview.4.22229.2

下表鏈接到 EF Core 包的預覽版 1 并描述了它們的用途。

包裹

鏈接

目的

Microsoft.EntityFrameworkCore

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.0-preview.4.22229.2

獨立于特定數據庫提供程序的主 EF Core 包

Microsoft.EntityFrameworkCore.SqlServer

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer/7.0.0-preview.4.22229.2

Microsoft SQL Server 和 SQL Azure 的數據庫提供程序

Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite/7.0.0-preview.4.22229.2

SQL Server 對空間類型的支持

Microsoft.EntityFrameworkCore.Sqlite

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Sqlite/7.0.0-preview.4.22229.2

SQLite 的數據庫提供程序,包括數據庫引擎的本機二進制文件

Microsoft.EntityFrameworkCore.Sqlite.Core

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Sqlite.Core/7.0.0-preview.4.22229.2

SQLite 的數據庫提供程序,沒有打包的本機二進制文件

Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite/7.0.0-preview.4.22229.2

SQLite 對空間類型的支持

Microsoft.EntityFrameworkCore.Cosmos

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Cosmos/7.0.0-preview.4.22229.2

Azure Cosmos DB 的數據庫提供程序

Microsoft.EntityFrameworkCore.InMemory

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.InMemory/7.0.0-preview.4.22229.2

內存數據庫提供程序

Microsoft.EntityFrameworkCore.Tools

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/7.0.0-preview.4.22229.2

用于 Visual Studio 包管理器控制臺的 EF Core PowerShell 命令;使用它來將腳手架和遷移等工具與 Visual Studio集成

Microsoft.EntityFrameworkCore.Design

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Design/7.0.0-preview.4.22229.2

EF Core 工具的共享設計時組件

Microsoft.EntityFrameworkCore.Proxies

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Proxies/7.0.0-preview.4.22229.2

延遲加載和更改跟蹤代理

Microsoft.EntityFrameworkCore.Abstractions

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Abstractions/7.0.0-preview.4.22229.2

解耦 EF Core 抽象;將此用于 EF Core 定義的擴展數據注釋等功能

Microsoft.EntityFrameworkCore.Relationa

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Relational/7.0.0-preview.4.22229.2

用于關系數據庫提供程序的共享 EFCore 組件

Microsoft.EntityFrameworkCore.Analyzers

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Analyzers/7.0.0-preview.4.22229.2

EF Core 的 C# 分析器

我們還發布了?Microsoft.Data.Sqlite.Core 7.0?預覽版 1 為?ADO.NET.

Microsoft.Data.Sqlite.Core

https://www.nuget.org/packages/Microsoft.Data.Sqlite.Core/7.0.0-preview.4.22229.2

ADO.NET

https://docs.microsoft.com/dotnet/framework/data/adonet/ado-net-overview

安裝 EF7 命令行界面 (CLI)

在執行 EF7 Core 遷移或腳本命令之前,您必須將 CLI 包安裝為全局或本地工具。

要全局安裝預覽工具,請安裝:

dotnet tool install --global dotnet-ef --version 7.0.0-preview.4.22229.2

如果您已經安裝了該工具,則可以使用以下命令對其進行升級:

dotnet tool update --global dotnet-ef --version 7.0.0-preview.4.22229.2

可以將此新版本的 EF7 CLI 用于使用舊版本 EF Core 運行時的項目。

每日builds

EF7 預覽版與 .NET 7 預覽版一致。這些預覽往往落后于 EF7 的最新工作。考慮使用每日builds來獲取最新的 EF7 功能和bug修復。

與預覽版一樣,每日builds需要 .NET 6。

每日builds

https://github.com/aspnet/AspNetCore/blob/master/docs/DailyBuilds.md

文檔和反饋

所有 EF Core 文檔的入口點是?docs.microsoft.com/ef/。

歡迎在?dotnet/efcore GitHub 存儲庫上提交發現的問題和任何其他反饋。(https://github.com/dotnet/efcore/issues/11597)

有用的網址

提供以下鏈接以方便參考和訪問。

  • 主要文檔:https://aka.ms/efdocs

  • EF Core 的問題和功能請求:https://aka.ms/efcorefeedback

  • 實體框架路線圖:https://aka.ms/efroadmap

  • 雙周更新:https://github.com/dotnet/efcore/issues/27185

來自團隊的感謝

EF 團隊非常感謝多年來使用并為 EF 做出貢獻的所有人!

歡迎來到 EF7。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287142.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【CC精品教程】ContextCapture 4.4.12(CC,Smart 3D)簡體中文版安裝教程(附安裝包下載)

ContextCapture 4.4.12簡體中文版是一款功能強大的三維建模軟件,用戶只需使用自己拍攝的普通照片,就能快速創建細節豐富的三維實景模型,并在項目的整個生命周期內為設計、施工和運營決策提供精確的現實環境背景。 目 錄 一、安裝過程 1. 安裝主程序cncpc040412333en_updt1…

《看聊天記錄都學不會C#?太菜了吧》(4)C# 中的尚方寶劍 “先斬后奏”

本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新&#xff0c;包括別的語言以及實戰都將使用對話的方式進行教學&#xff0c;基礎編程語言教學適用于零基礎小白&#xff0c;之后實戰課程也將會逐步更新。 若…

Android之解決多語言適配部分TextView內容左對齊和內容一行不排滿就到第二行問題

1 問題 1、多語言適配部分TextView內容左對齊 2、內容一行不排滿就到第二行問題 2 解決辦法 問題1、在TextView里面加入下面參數 android:gravity="center" 問題2、 import android.content.Context; import android.graphics.Paint; import android.text.TextUti…

如何用 Swift 語言構建一個自定控件

本文譯自&#xff1a;How To Make a Custom Control in Swift 用戶界面控件是所有應用程序重要的組成部分之一。它們以圖形組件的方式呈現給用戶&#xff0c;用戶可以通過它們與應用程序進行交互。蘋果提供了一套控件&#xff0c;例如 UITextField&#xff0c;UIButton&#xf…

【ArcGIS遇上Python】ArcGIS Python獲取Shapefile矢量數據字段名稱

借助PyCharm環境&#xff0c;在不打開ArcGIS的情況下&#xff0c;編寫Python代碼&#xff0c;獲取矢量數據的所有字段。 import arcpyshp C:\data\out\Export_Output.shp fields arcpy.ListFields(shp) for f in fields:print f.name‘,’f.type運行結果&#xff1a; C:\Pyt…

《聰明人和傻子和程序員》

本文借鑒自魯迅雜文《聰明人和傻子和奴才》&#xff0c;如有雷同&#xff0c;純屬巧合。有個程序員特別喜歡尋人訴苦&#xff0c;只要一點事&#xff0c;就喜歡訴苦。有一日&#xff0c;他遇到一個聰明人。“大佬。”他悲哀的說&#xff0c;“我們公司待遇越來越差了&#xff0…

c語言 case語句用法,switch ... case語句的用法[組圖]

switch ... case語句的用法[組圖]08-13欄目&#xff1a;技術TAG&#xff1a;switch case語句switch case語句當情況大于或等于4種的時候就用switch ... case語句copyright jhua.orgswitch(表達式) copyright jhua.org{ https://www.jhua.orgcase 常量1&#xff1a; 語句體1&am…

《看聊天記錄都學不會C#?太菜了吧》(5)C# 中可以用中文名變量?

本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新&#xff0c;包括別的語言以及實戰都將使用對話的方式進行教學&#xff0c;基礎編程語言教學適用于零基礎小白&#xff0c;之后實戰課程也將會逐步更新。 若…

Android之TabLayout和ViewPager組合跳轉到指定頁面

1 問題 TabLayout和ViewPager組合跳轉到具體一個頁面 2 解決辦法 viewPager?.setCurrentItem(index) index為0說明是第一頁&#xff0c;如果是1的話就是第二頁&#xff0c;以此類推。

【ArcGIS遇上Python】ArcGIS Python中文編碼問題案例詳解

前面的文章《ArcGIS Python獲取Shapefile矢量數據字段名稱》我們已經學會了如何用 Python 獲取中文路徑下的shp數據的所有字段,英文沒有問題,但是如果你輸出中文路徑下的數據字段, 就有可能會碰到中文編碼問題。 Python 文件中如果未指定編碼,在執行過程會出現報錯: impo…

gRPC編碼初探(java)

背景&#xff1a;gRPC是一個高性能、通用的開源RPC框架&#xff0c;其由Google主要面向移動應用開發并基于HTTP/2協議標準而設計&#xff0c;基于ProtoBuf(Protocol Buffers)序列化協議開發&#xff0c;且支持眾多開發語言。gRPC提供了一種簡單的方法來精確地定義服務和為iOS、…

WPF 基礎控件之 RadioButton 樣式

其他基礎控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.ProgressBarRadioButton 實現下面的效果1&#xff09;RadioButton來實現動畫&#xff1b;Border嵌套 Ellipse并設置Sca…

對歸并排序進行c語言編程實現,歸并排序及C語言實現

排序系列之(1)歸并排序及C語言實現有很多算法在結構上是遞歸的&#xff1a;為了解決一個給定的問題&#xff0c;算法需要一次或多次遞歸的調用其本身來解決相關的問題。這些算法通常采用分治策略&#xff1a;將原問題劃分成n個規模較小而結構與原問題相似的子問題&#xff1b;遞…

Android之提示錯誤Can not perform this action after onSaveInstanceState

1 問題 主頁面3個Fragment,在第三個Fragment里面開啟了Activity之后,然后想跳到第一個Fragment代碼如下 /*** 展示Fragment*/private fun showFragment(fragment: Fragment) {if (currentFragment !== fragment) {val transaction: FragmentTransaction = supportFragmentMa…

《看聊天記錄都學不會C#?太菜了吧》(6)多晦澀的專業術語原來都會那么簡單

本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新&#xff0c;包括別的語言以及實戰都將使用對話的方式進行教學&#xff0c;基礎編程語言教學適用于零基礎小白&#xff0c;之后實戰課程也將會逐步更新。 若…

【Python可視化】利用Numpy繪制各種統計圖表

NumPy簡介 NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。 NumPy 的前身 Numeric 最早是由 Jim Hugunin 與其它協作者共同開發,2005 年,Travis Oliphant 在 Numeric 中結合了另一個同性質…

這個設計原則,你認同嗎?

前言我們都知道依賴注入的方式常見的主要有三種構造函數注入屬性注入接口注入在大名鼎鼎的Spring框架中大量使用屬性注入的方式&#xff0c;屬性注入的方式寫起來那是真的爽&#xff1b;而在Asp.NetCore中則不支持屬性注入&#xff0c;如果不使用第三方庫&#xff0c;我們就只能…

Android之提示Unable to instantiate fragment***MyLikeFragment .could not find Fragment constructor

1 問題 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appsinnova.android.keepdrop/com.appsinnova.android.keepdrop.account.favorite.activity.MyLikeActivity}: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiat…

SQLServer2008-鏡像數據庫實施手冊(雙機)SQL-Server2014同樣適用

SQL Server2008R2-鏡像數據庫實施手冊(雙機)SQL Server2014同樣適用 一、配置主備機 1、 服務器基本信息 主機名稱為&#xff1a;HOST_A&#xff0c;IP地址為&#xff1a;192.168.1.155 備機名稱為&#xff1a;HOST_B&#xff0c;IP地址為&#xff1a;192.168.1.156 二、主備實…

一萬字一篇文20分鐘學會C語言和Python,十四年編程經驗老鳥傳授經驗之道

前言 昨天在直播中有粉絲問我如何快速的對編程語言入門&#xff0c;我想這個問題是有必要讓大家知道的&#xff0c;相必也有很多新手對于如何快速完成編程語言的入門學習很感興趣&#xff0c;本篇文將會使用 C 語言以及 Python 為例&#xff0c;做出對比&#xff0c;讓大家對編…