EF Core 6.0的新計劃

  • 2021 年 1 月 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至關重要的東西,或者關注的方向是錯誤的,請評論這篇文章。

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

 

原文鏈接://devblogs.microsoft.com/dotnet/the-plan-for-entity-framework-core-6-0/