今天,我們很興奮地與你分享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/