EF Core 6.0的新計劃

碼農譯站發表於2021-01-20

今天,我們很興奮地與你分享Entity Framework Core 6.0的計劃。

這個計劃彙集了許多人的意見,並概述了我們打算在哪裡以及如何優化實體框架(EF Core) 6.0版本。這個計劃並不是固定不變的,並且會隨著我們在這個版本上的工作而發展。這個計劃包括來自像你一樣的人的反饋,所以請讓我們知道你的想法!

一般資訊

EF Core 6.0EF Core 5.0之後的下一個版本,目前計劃於202111月與.net 6同時釋出。EF Core 6.0將與.net 6一起作為一個長期支援(LTS)釋出。

EF Core 6.0在釋出時可能會以.net 6為目標。它不太可能支援任何.net Standard版本。它不能在.net Framwork上執行。

主題

高要求的功能

和往常一樣,規劃過程中的主要投入來自GitHub上的投票。對於EF Core 6.0,我們計劃致力於以下高度要求的特性:

  • SQL Server臨時表
    • 允許通過遷移建立臨時表,以及允許通過LINQ查詢訪問歷史資料。
  • JSON
    • 引入可以由任何資料庫提供者實現的通用JSON模式。
    • JSON列支援將實現SQL ServerSQLite(注意,PostgreSQLMySQL提供程式已經支援JSON列了。)
  • ColumnAttribute.Order
    • 在建立帶有遷移或確保重新建立的表時,允許對列進行任意排序。

效能

雖然EF Core總體上比EF6快,但仍有一些效能上的顯著提升的地方。我們計劃在EF Core 6.0中解決這些問題,同時改善我們的perf基礎設施和測試。

  • 效能基礎結構和新測試
    • 改進效能測試的基礎設施,新增新的測試和修復容易實現的目標。
  • 編譯模型
    • 編譯後的模型將提高啟動效能,並且在訪問模型時通常具有更好的效能。
  • TechEmpower Fortunes
    • 我們計劃在TechEmpower Fortunes測試中達到Dapper的表現。(這是一個重大的挑戰,可能不會完全實現。儘管如此,我們還是會盡可能地接近。)
  • Linker/ AOT
    • 我們將繼續研究如何讓EF Core更好地使用LinkerAOT。我們不期望在6.0的框架內完全縮小差距,但我們希望取得重大進展。

遷移和部署

在對EF Core 5.0進行調查之後,我們計劃引入對管理遷移和部署資料庫的改進支援。這包括兩個主要領域:

  • 遷移包
    • 遷移包將為部署EF Core遷移提供一個簡單、健壯的機制。
  • 管理遷移
    • Wwe計劃改進EF核心遷移的工具和專案/裝配管理。

改進現有功能並修復bug

  • EF6查詢
    • 我們計劃縮小與EF6之間的查詢差距,使所支援的EF Core查詢成為所支援EF6查詢的真正超集。
  • 值物件
    • 我們計劃引入一種更好的體驗,專注於領域驅動設計中值物件的需求。
    • 這種方法將基於值轉換器,而不是已被證明不適合的實體。
  • Cosmos Provider
    • 我們正在積極收集關於在EF Core 6.0中對Cosmos Provider做哪些改進的反饋.
  • 嚮應用程式公開模型構建約定
    • 模型構建約定目前由資料庫provider控制。在EF Core 6.0中,我們打算允許應用程式hook並更改這些約定。
  • bug平衡(ZBB)
    • 我們計劃在EF Core 6.0框架內修復所有未解決的非阻塞bug
  • 其他較小的特點
    • 對非導航集合進行拆分查詢
    • 在逆向工程中檢測簡單的連線表並建立多對多關係
    • 在SQLiteSQL伺服器上完成完整/自由文字搜尋
    • SQL Server空間索引
    • 為模型中給定型別的任何屬性指定預設轉換的機制/API
    • 使用ADO.NET中新的批處理API

.net整合

EF的核心團隊也在研究幾個相關但獨立的.net資料技術。特別是,我們計劃在以下方面開展工作:

  • 增強System.Data
    • 新的批處理API的實現
    • 繼續與其他.net團隊和社群合作,以理解和發展ADO.NET
    • 對系統跟蹤的診斷源進行標準化
  • 增強Microsoft.Data.Sqlite
    • 連線池
    • Prepared statements
  • 空引用型別
    • 我們將對EF核心程式碼進行註釋,以使用可空引用型別。

實驗和調查

EF團隊計劃在EF Core6.0的框架內投入時間在兩個領域進行實驗和調查。這是一個學習的過程,因此在6.0版本中沒有具體的交付計劃。

  • SqlServer.Core
    • 這是一個與社群合作的實驗,目的是確定在高效能SQL Server驅動程式中現代.net特性的潛力。
  • GraphQL
    • 我們計劃對該領域進行研究,並與社群合作,找到改進.net中使用GraphQL的體驗的方法。

瞭解更多

這篇文章是對EF Core 6.0計劃的一個簡要總結。請檢視完整的計劃以獲得更多資訊。

建議

你對計劃的反饋很重要。在GitHub上為某個問題投票是表明該問題重要性的最好方式。然後,這些資料將被輸入到下一個版本的計劃過程中。

另外,如果你認為我們遺漏了一些對EF Core 6.0至關重要的東西,或者關注的方向是錯誤的,請評論這篇文章。

歡迎關注我的公眾號,如果你有喜歡的外文技術文章,可以通過公眾號留言推薦給我。

 

原文連結:https://devblogs.microsoft.com/dotnet/the-plan-for-entity-framework-core-6-0/

 

相關文章