今天,我們很興奮地與你分享Entity Framework Core 6.0的計劃。
這個計劃彙集了許多人的意見,並概述了我們打算在哪裡以及如何優化實體框架(EF Core) 6.0版本。這個計劃並不是固定不變的,並且會隨著我們在這個版本上的工作而發展。這個計劃包括來自像你一樣的人的反饋,所以請讓我們知道你的想法!
一般資訊
EF Core 6.0是EF Core 5.0之後的下一個版本,目前計劃於2021年11月與.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 Server和SQLite。(注意,PostgreSQL和MySQL提供程式已經支援JSON列了。)
- ColumnAttribute.Order
- 在建立帶有遷移或確保重新建立的表時,允許對列進行任意排序。
效能
雖然EF Core總體上比EF6快,但仍有一些效能上的顯著提升的地方。我們計劃在EF Core 6.0中解決這些問題,同時改善我們的perf基礎設施和測試。
- 效能基礎結構和新測試
- 改進效能測試的基礎設施,新增新的測試和修復容易實現的目標。
- 編譯模型
- 編譯後的模型將提高啟動效能,並且在訪問模型時通常具有更好的效能。
- TechEmpower Fortunes
- 我們計劃在TechEmpower Fortunes測試中達到Dapper的表現。(這是一個重大的挑戰,可能不會完全實現。儘管如此,我們還是會盡可能地接近。)
- Linker/ AOT
- 我們將繼續研究如何讓EF Core更好地使用Linker和AOT。我們不期望在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。
- 其他較小的特點
- 對非導航集合進行拆分查詢
- 在逆向工程中檢測簡單的連線表並建立多對多關係
- 在SQLite和SQL伺服器上完成完整/自由文字搜尋
- 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/