規劃 Entity Framework Core 5.0
重要
EF Core 5.0 現已發行 。 此頁面會維持為計畫的歷程記錄。
如規劃程式中 所述 ,我們已將專案關係人的意見收集到 EF Core 5.0 版本的暫定方案。
重要
此計畫仍在進行中。 這裡沒有什麼是承諾的。 此計畫是隨著我們深入瞭解而演進的起點。 目前未規劃 5.0 的某些事情可能會被提取。 目前計畫 5.0 的一些事情可能會被淘汰。
一般資訊
版本號碼和發行日期
EF Core 5.0 目前已排程為 .NET 5.0 同時發行 。 選擇版本 「5.0」 以配合 .NET 5.0。
支援的平台
EF Core 5.0 計畫在任何 .NET Standard 2.1 平臺上執行,包括 .NET 5.0。 這是平臺與 .NET Core 較通用的 .NET 廣泛 聚合的一部分。
EF Core 5.0 不會在 .NET Framework 上執行。
重大變更
EF Core 5.0 將包含一些 重大變更 ,但這些變更會比 EF Core 3.0 的情況要少得多。 我們的目標是允許絕大多數應用程式在不中斷的情況下更新。
預期資料庫提供者會有一些重大變更,特別是在 TPT 支援周圍。 不過,我們預期 5.0 的提供者更新工作將小於 3.0 更新所需的工作。
Themes
我們已擷取幾個主要領域或主題,以形成 EF Core 5.0 大量投資的基礎。
依慣例完全透明多對多對應
潛在客戶開發人員: @smitpatel 、 @AndriySvyryd 和 @lajones
追蹤者 #10508
T 恤尺寸:L
狀態:完成
多對多是 GitHub 待辦專案上最要求的功能 (~506 票)。
支援多對多關聯性可分成三個主要領域:
- 略過下一個主題所涵蓋的導覽屬性。
- 屬性包實體類型。 這些可讓標準 CLR 類型 (例如
Dictionary
) 用於實體實例,讓每個實體類型不需要明確的 CLR 類型。 由 #9914 追蹤。 - Sugar 可讓您輕鬆設定多對多關聯性。
除了略過導覽支援之外,我們現在已將這些多對多的其他區域提取到 EF Core 5.0,以提供完整的體驗。
多對多流覽屬性(也就是「略過導覽」)
潛在客戶開發人員: @smitpatel 和 @AndriySvyryd
追蹤者 #19003
T 恤尺寸:L
狀態:完成
如第一個主題所述,多對多支援具有多個層面。 此主題會特別追蹤略過導覽的使用。 我們認為,對於想要多對多支援的人來說,最重要的封鎖程式無法在查詢等商務邏輯中使用「自然」關聯性,而不參考聯結資料表。 聯結資料表實體類型可能仍然存在,但不應該以商務邏輯的方式取得。
每一類型的資料表 (TPT) 繼承對應
潛在客戶開發人員: @AndriySvyryd 和 @smitpatel
追蹤者 :#2266
T 恤尺寸:XL
狀態:完成
我們正在做 TPT,因為它是高度要求的功能(~289票;整體為第三票),因為它需要一些低階變更,我們認為適合整體 .NET 5 計畫的基礎性質。 我們預期這會導致資料庫提供者的重大變更,不過這些變更應該遠低於 3.0 所需的變更。
篩選的 Include
潛在客戶開發人員: @maumar
追蹤者 #1833
T 恤尺寸:M
狀態:完成
篩選的 Include 是高度要求的功能(~376 票;整體為第 2 張),不是大量的工作,我們相信會解除封鎖或簡化許多目前需要模型層級篩選或更複雜的查詢的案例。
分割 Include
潛在客戶開發人員: @smitpatel
追蹤者 :#20892
T 恤尺寸:L
狀態:完成
EF Core 3.0 已變更預設行為,為指定的 LINQ 查詢建立單一 SQL 查詢。 這會導致針對多個集合使用 Include 的查詢產生大型效能回歸。
在 EF Core 5.0 中,我們會保留新的預設行為。 不過,EF Core 5.0 現在允許產生多個集合的查詢 Include,其中具有單一查詢會造成效能不佳。
必要的一對一相依專案
潛在客戶開發人員: @AndriySvyryd 和 @smitpatel
追蹤者 #12100
T 恤尺寸:M
狀態:完成
在 EF Core 3.0 中,所有相依專案,包括擁有的類型都是選擇性的(例如 Person.Address 可以是 Null)。 在 EF Core 5.0 中,可以視需要設定相依專案。
合理化 ToTable、ToQuery、ToView、FromSql 等
潛在客戶開發人員: @AndriySvyryd 和 @smitpatel
追蹤者 #17270
T 恤尺寸:L
狀態:完成
我們在舊版中已取得進展,以支援原始 SQL、無索引鍵類型和相關領域。 然而,一切都在一起運作的方式存在差距和不一致。 5.0 的目標是修正這些問題,並建立定義、移轉和使用不同類型的實體及其相關查詢和資料庫成品的良好體驗。 這也可能牽涉到已編譯查詢 API 的更新。
請注意,此專案可能會導致一些應用層級的重大變更,因為我們目前擁有的某些功能過於寬鬆,因此可能會導致人員陷入失敗的坑。 我們最終可能會封鎖某些功能,並指導要採取哪些動作。
一般查詢增強功能
潛在客戶開發人員: @smitpatel 和 @maumar
追蹤 在 5.0 里程碑中標示 area-query
的問題
T 恤尺寸:XL
狀態:完成
針對 EF Core 3.0,查詢轉譯程式碼已廣泛重寫。 查詢程式碼通常處於更強固的狀態,因為這樣。 對於 5.0,我們不打算進行重大查詢變更,而不需要支援 TPT 並略過導覽屬性。 然而,在3.0大修中還剩下一些技術債務,仍然需要進行重大工作。 我們也計畫修正許多 Bug 並實作小型增強功能,以進一步改善整體查詢體驗。
移轉和部署體驗
潛在客戶開發人員: @bricelam
追蹤者 #19587
T 恤尺寸:L
狀態:範圍/完成
範圍界定:移 轉套件組合功能 已延遲到 EF Core 5.0 版本之後。 不過,EF Core 5.0 中將包含與移 轉相關的數個其他 目標改善
目前,許多開發人員會在應用程式啟動時移轉其資料庫。 這很容易,但不建議這樣做,因為:
- 多個執行緒/進程/伺服器可能會嘗試同時移轉資料庫
- 應用程式可能會在發生此情況時嘗試存取不一致的狀態
- 通常不應將修改架構的資料庫許可權授與應用程式執行
- 如果發生問題,很難還原回乾淨的狀態
我們想要在這裡提供更好的體驗,以方便在部署時間移轉資料庫。 這應該:
- 在 Linux、Mac 和 Windows 上工作
- 在命令列上體驗良好
- 使用容器支援案例
- 使用常用的真實世界部署工具/流程
- 至少整合至 Visual Studio
結果可能是 EF Core 中的許多小型改善(例如,SQLite 上的較佳移轉),以及與其他小組的指引和長期共同作業,以改善超越 EF 的端對端體驗。
EF Core 平臺體驗
潛在客戶開發人員: @roji 和 @bricelam
追蹤者 #19588
T 恤尺寸:L
狀態:範圍/完成
範圍界定:平臺指引和範例已針對 Blazor、Xamarin、WinForms 和 WPF 發佈。 Xamarin 和其他 AOT/linker 工作現在已規劃用於 EF Core 6.0。
我們有在傳統 MVC 類似 Web 應用程式中使用 EF Core 的良好指引。 其他平臺和應用程式模型的指引遺失或過期。 針對 EF Core 5.0,我們計畫調查、改善及記錄搭配使用 EF Core 的體驗:
- Blazor
- Xamarin,包括使用 AOT/連結器本文
- WinForms/WPF/WinUI,以及可能的其他 U.I. 架構
這很可能是 EF Core 中的許多小型改善,以及與其他小組的指引和長期共同作業,以改善超越 EF 的端對端體驗。
我們計畫查看的特定領域如下:
- 部署,包括使用 EF 工具的體驗,例如移轉
- 應用程式模型,包括 Xamarin 和 Blazor,以及其他可能
- SQLite 體驗,包括空間體驗和資料表重建
- AOT 和連結體驗
- 診斷整合,包括 perf 計數器
效能
潛在客戶開發人員: @roji
T 恤尺寸:L
狀態:範圍/完成
範圍界定:Npgsql 提供者的主要效能改進已完成。 EF Core 6.0 現在已規劃其他效能工作。
針對 EF Core,我們計畫改善效能基準測試套件,並針對執行時間進行導向效能改善。 此外,我們計畫完成 3.0 發行週期期間原型的新 ADO.NET 批次處理 API。 此外,在 ADO.NET 層,我們規劃 Npgsql 提供者的額外效能改善。
作為這項工作的一部分,我們也計畫視需要新增 ADO.NET/EF Core 效能計數器和其他診斷。
架構/參與者檔
潛在客戶檔員: @ajcvickers
追蹤者 #1920
T 恤尺寸:L
狀態:剪下
這裡的想法是讓您更輕鬆地瞭解 EF Core 內部的內容。 對於使用 EF Core 的任何人來說,這非常有用,但主要動機是讓外部人員更容易:
- 參與 EF Core 程式碼
- 建立資料庫提供者
- 建置其他延伸模組
更新:不幸的是,這個計畫過於雄心勃勃。 我們仍然認為這很重要,但不幸的是,它不會與 EF Core 5.0 一起登陸。
Microsoft.Data.Sqlite 檔
潛在客戶檔員: @bricelam
追蹤者 #1675
T 恤尺寸:M
狀態:已完成。 新檔即時 于 Microsoft Learn 上。
EF Team 也擁有 Microsoft.Data.Sqlite ADO.NET 提供者。 我們計畫將此提供者完整記載為 5.0 版的一部分。
一般文件
潛在客戶檔員: @ajcvickers
T 恤尺寸:L
狀態:進行中
我們已經在更新 3.0 和 3.1 版本的檔的過程中。 我們也致力於:
- 入門文章的徹底改革,使其更容易接近/更容易遵循
- 重組發行項,讓專案更容易尋找及新增交叉參考
- 將更多詳細資料和厘清新增至現有文章
- 更新範例並新增更多範例
修正 Bug
開發人員: @roji 、、 @maumar 、 @smitpatel @bricelam 、 @AndriySvyryd 、@ajcvickers
T 恤尺寸:L
狀態:進行中
在撰寫本文時,我們已在 5.0 版本中修正 135 個 Bug(已修正 62 個),但與上述的 一般查詢增強 功能區段有顯著重迭。
在 3.0 版的過程中,傳入的費率(最終在里程碑中作為工作的問題)大約是每月 23 個問題。 並非所有這些專案都必須在 5.0 中修正。 根據粗略估計,我們計畫在 5.0 時間範圍內修正額外的 150 個問題。
小型增強功能
追蹤 在 5.0 里程碑中標示 type-enhancement
的問題
開發人員: @roji 、、 @maumar 、 @smitpatel @bricelam 、 @AndriySvyryd 、@ajcvickers
T 恤尺寸:L
狀態:完成
除了上述更大的功能外,我們也有許多較小的改進計畫為 5.0 來修正「剪紙」。 請注意,上述更一般的主題也會涵蓋其中許多增強功能。
下線
依 加上標籤的問題追蹤 consider-for-next-release
這些是目前未 針對 5.0 版本排程的錯誤修正和增強功能 ,但我們會視上述工作進度而定,將視為延展目標。
此外,在規劃時,我們一律考慮 投票最多的問題 。 從發行中削減這些問題總是很痛苦,但我們確實需要一個實際的資源計劃。
建議
您對計劃的意見反應很重要。 若要指出問題的重要性,最佳方式是在 GitHub 上針對該問題投票 (大拇指)。 此資料接著會饋送至 下一個版本的規劃程式 。