Sdílet prostřednictvím


Plán pro Entity Framework Core 5.0

Důležité

Ef Core 5.0 je teď vydáno. Tato stránka zůstává jako historický záznam plánu.

Jak je popsáno v procesu plánování, shromáždili jsme vstup od zúčastněných stran do nezávazného plánu pro vydání EF Core 5.0.

Důležité

Tento plán stále probíhá. Nic tady není závazek. Tento plán je výchozím bodem, který se bude vyvíjet, jakmile se dozvíme více. Některé věci, které se momentálně neplánují na 5,0, můžou být staženy. Některé věci, které se aktuálně plánují na 5,0, se můžou dostat ven.

Obecné informace

Číslo verze a datum vydání

Ef Core 5.0 je aktuálně naplánováno pro vydání ve stejnou dobu jako .NET 5.0. Verze 5.0 byla zvolena tak, aby odpovídala rozhraní .NET 5.0.

Podporované platformy

EF Core 5.0 se plánuje spustit na libovolné platformě .NET Standard 2.1, včetně .NET 5.0. Toto je součástí obecnější konvergence platforem .NET k .NET Core.

EF Core 5.0 se nebude spouštět v rozhraní .NET Framework.

Změny způsobující chyby

EF Core 5.0 bude obsahovat některé zásadní změny, ale ty budou mnohem méně závažné, než tomu bylo u EF Core 3.0. Naším cílem je umožnit, aby se velká většina aplikací aktualizovala bez přerušení.

Očekává se, že poskytovatelé databází budou mít nějaké zásadní změny, zejména pokud jde o podporu TPT. Očekáváme ale, že práce na aktualizaci poskytovatele na verzi 5.0 bude menší, než bylo nutné aktualizovat pro verzi 3.0.

Themes

Extrahovali jsme několik hlavních oblastí nebo motivů, které tvoří základ pro velké investice do EF Core 5.0.

Plně transparentní mapování M:N podle konvence

Vedoucí vývojáři: @smitpatel, @AndriySvyryda @lajones

Sledované uživatelem č. 10508

Velikost trička: L

Stav: Hotovo

N:N je nejžádanější funkce (~506 hlasů) v backlogu GitHubu.

Podporu relací M:N je možné rozdělit do tří hlavních oblastí:

  • Přeskočte navigační vlastnosti– pokryté dalším motivem.
  • Typy entit v kontejneru vlastností Ty umožňují použití standardního typu CLR (např. Dictionary) pro instance entit, aby explicitní typ CLR nebyl pro každý typ entity potřeba. Sleduje ho #9914.
  • Cukr pro snadnou konfiguraci relací M:N.

Kromě podpory pro přeskočení navigace teď načítáme tyto další oblasti M:N do EF Core 5.0, abychom vám poskytli kompletní prostředí.

Vlastnosti navigace M:N (a.k.a "skip navigations")

Vedoucí vývojáři: @smitpatel a @AndriySvyryd

Sledované uživatelem č. 19003

Velikost trička: L

Stav: Hotovo

Jak je popsáno v prvním motivu, podpora M:N má několik aspektů. Tento motiv konkrétně sleduje použití přeskakovaných navigačních panelů. Věříme, že nejvýznamnější překážkou pro ty, kteří chtějí podporu M:N, není schopna používat "přirozené" relace bez odkazování na tabulku spojení v obchodní logice, jako jsou dotazy. Typ entity tabulky join stále existuje, ale neměl by se dostat do způsobu obchodní logiky.

Mapování dědičnosti typu tabulky (TPT)

Vedoucí vývojář: @AndriySvyryd a @smitpatel

Sledované č. 2266

Velikost trička: XL

Stav: Hotovo

TpT děláme, protože se jedná o vysoce požadovanou funkci (přibližně 289 hlasů, třetí celkem) a protože vyžaduje některé změny nízké úrovně, které jsou vhodné pro základní povahu celkového plánu .NET 5. Očekáváme, že výsledkem budou zásadní změny pro poskytovatele databází, i když by měly být mnohem méně závažné než změny potřebné pro verzi 3.0.

Filtrované zahrnutí

Vedoucí vývojář: @maumar

Sledované uživatelem č. 1833

Velikost trička: M

Stav: Hotovo

Filtrované zahrnutí je vysoce požadovaná funkce (přibližně 376 hlasů; 2. celkem), která není obrovskou prací, a věříme, že odblokuje nebo usnadňuje mnoho scénářů, které aktuálně vyžadují filtry na úrovni modelu nebo složitější dotazy.

Rozdělení zahrnutí

Vedoucí vývojář: @smitpatel

Sledované č. 20892

Velikost trička: L

Stav: Hotovo

EF Core 3.0 změnilo výchozí chování tak, aby pro daný dotaz LINQ vytvořilo jeden dotaz SQL. To způsobilo velké regrese výkonu pro dotazy, které používají include pro více kolekcí.

V EF Core 5.0 zachováváme nové výchozí chování. EF Core 5.0 ale teď umožní generování více dotazů pro kolekci Včetně, kdy jeden dotaz způsobuje špatný výkon.

Požadované závislé 1:1

Vedoucí vývojáři: @AndriySvyryd a @smitpatel

Sledované č . 12100

Velikost trička: M

Stav: Hotovo

V EF Core 3.0 jsou všechny závislé položky včetně vlastněných typů volitelné (např. Person.Address může mít hodnotu null). V EF Core 5.0 je možné podle potřeby nakonfigurovat závislé osoby.

Racionalizace ToTable, ToQuery, ToView, FromSql atd.

Vedoucí vývojáři: @AndriySvyryd a @smitpatel

Sledované uživatelem č. 17270

Velikost trička: L

Stav: Hotovo

V předchozích verzích jsme pokročili k podpoře nezpracovaných SQL, bezklíčových typů a souvisejících oblastí. Existují však mezery i nekonzistence v tom, jak všechno funguje jako celek. Cílem verze 5.0 je tyto chyby opravit a vytvořit vhodné prostředí pro definování, migraci a používání různých typů entit a souvisejících dotazů a artefaktů databáze. To může zahrnovat také aktualizace zkompilovaného rozhraní API pro dotazy.

Všimněte si, že tato položka může vést k nějakým zásadním změnám na úrovni aplikace, protože některé funkce, které aktuálně máme, jsou příliš přesvědčivé, aby mohly rychle vést lidi k pitům selhání. Některé z těchto funkcí pravděpodobně zablokujeme společně s pokyny k tomu, co místo toho udělat.

Obecná vylepšení dotazů

Vedoucí vývojáři: @smitpatel a @maumar

Sledované problémy označené area-query v milníku 5.0

Velikost trička: XL

Stav: Hotovo

Kód překladu dotazů se pro EF Core 3.0 výrazně přepsal. Kód dotazu je z tohoto důvodu obecně mnohem robustnější. Pro verzi 5.0 neplánujeme provádět významné změny dotazů mimo ty, které jsou potřeba k podpoře TPT a přeskočení navigačních vlastností. Stále je však zapotřebí značné práce na opravě určitého technického dluhu z opravy 3,0. Plánujeme také opravit mnoho chyb a implementovat malá vylepšení pro další vylepšení celkového prostředí dotazů.

Migrace a prostředí nasazení

Vedoucí vývojáři: @bricelam

Sledované č. 19587

Velikost trička: L

Stav: Vymezeno/Hotovo

Rozsah: Funkce sad migrace byla odložena až do vydání EF Core 5.0. Do EF Core 5.0 se ale zahrne několik dalších cílených vylepšení souvisejících s migracemi .

V současné době mnoho vývojářů migruje své databáze v době spuštění aplikace. To je snadné, ale nedoporučuje se, protože:

  • Souběžná migrace databáze se může pokusit provést více vláken, procesů nebo serverů.
  • Aplikace se můžou pokusit o přístup k nekonzistentnímu stavu v době, kdy k tomu dochází
  • Pro provádění aplikace by obvykle neměla být udělena oprávnění databáze k úpravě schématu.
  • Pokud se něco nepovede, je těžké se vrátit zpět k čistému stavu.

Chceme zde poskytovat lepší prostředí, které umožňuje snadný způsob migrace databáze v době nasazení. Mělo by to vypadat takto:

  • Práce na Linuxu, Macu a Windows
  • Dobré prostředí na příkazovém řádku
  • Scénáře podpory s kontejnery
  • Práce s běžně používanými nástroji/toky pro nasazení z reálného světa
  • Integrace do aspoň sady Visual Studio

Výsledkem bude pravděpodobně mnoho malých vylepšení EF Core (například lepší migrace na SQLite) společně s doprovodnými materiály a dlouhodobějšími spoluprácemi s jinými týmy, aby se zlepšila kompletní prostředí, která překračují jenom EF.

Prostředí platforem EF Core

Vedoucí vývojáři: @roji a @bricelam

Sledované č. 19588

Velikost trička: L

Stav: Rozsah/Hotovo

Obory: Pokyny a ukázky platformy se publikují pro Blazor, Xamarin, WinForms a WPF. Pro EF Core 6.0 se teď plánuje práce Xamarinu a dalších AOT/linkerů.

Máme dobré pokyny pro použití EF Core v tradičních webových aplikacích podobných MVC. Pokyny pro jiné platformy a aplikační modely buď chybí, nebo jsou zastaralé. Pro EF Core 5.0 plánujeme prozkoumat, vylepšit a zdokumentovat zkušenosti s používáním EF Core s:

  • Blazor
  • Xamarin, včetně použití scénáře AOT/linkeru
  • WinForms/WPF/WinUI a možná i jiné architektury USA

Pravděpodobně to bude mnoho malých vylepšení EF Core společně s doprovodnými materiály a dlouhodobějšími spoluprácemi s jinými týmy, aby se zlepšila kompletní prostředí, která přesahují jenom EF.

Konkrétní oblasti, na které se máme podívat, patří:

  • Nasazení, včetně prostředí pro používání nástrojů EF, jako jsou migrace
  • Aplikační modely, včetně Xamarinu a Blazoru, a pravděpodobně i jiných
  • Prostředí SQLite, včetně prostorového prostředí a opětovného sestavení tabulek
  • AOT a propojování prostředí
  • Integrace diagnostiky, včetně čítačů výkonu

Výkon

Vedoucí vývojář: @roji

Sledované problémy označené area-perf v milníku 5.0

Velikost trička: L

Stav: Vymezeno/Hotovo

Rozsah: Jsou dokončena hlavní vylepšení výkonu poskytovatele Npgsql. Pro EF Core 6.0 se teď plánuje jiná práce s výkonem.

Pro EF Core plánujeme vylepšit naši sadu srovnávacích testů výkonu a zlepšit směrovaný výkon modulu runtime. Kromě toho plánujeme dokončit nové rozhraní API pro dávkování ADO.NET, které bylo prototypováno během cyklu vydání verze 3.0. Také na ADO.NET vrstvě plánujeme další vylepšení výkonu u poskytovatele Npgsql.

V rámci této práce plánujeme také podle potřeby přidat ADO.NET/EF čítače výkonu Core a další diagnostiku.

Dokumentace k architektuře nebo přispěvateli

Vedoucí dokumentátor: @ajcvickers

Sledované uživatelem č. 1920

Velikost trička: L

Stav: Vyjmutí

Cílem je usnadnit pochopení toho, co se děje v interních prostředích EF Core. To může být užitečné pro každého, kdo používá EF Core, ale hlavní motivací je usnadnit externím lidem:

  • Přispívání do kódu EF Core
  • Vytvoření zprostředkovatelů databáze
  • Sestavení dalších rozšíření

Aktualizace: Tento plán byl bohužel příliš ambiciózní. Stále věříme, že je to důležité, ale bohužel se nepostane s EF Core 5.0.

Dokumentace k Microsoft.Data.Sqlite

Vedoucí dokumentátor: @bricelam

Sledované č. 1675

Velikost trička: M

Stav: Dokončeno. Nová dokumentace je živá v Microsoft Learn.

Ef Team také vlastní poskytovatele microsoft.Data.Sqlite ADO.NET. Plánujeme plně zdokumentovat tohoto poskytovatele v rámci verze 5.0.

Obecná dokumentace

Vedoucí dokumentátor: @ajcvickers

Sledované problémy v úložišti dokumentace v milníku 5.0

Velikost trička: L

Stav: Probíhá

Právě probíhá aktualizace dokumentace pro verze 3.0 a 3.1. Pracujeme také na:

  • Přepracování článků Začínáme, aby byly přístupnější/ jednodušší
  • Změna uspořádání článků, aby bylo snazší najít a přidat křížové odkazy
  • Přidání dalších podrobností a objasnění do existujících článků
  • Aktualizace ukázek a přidání dalších příkladů

Oprava chyb

Sledované problémy označené type-bug v milníku 5.0

Vývojáři: @roji, @maumar, @bricelam, @smitpatel, @AndriySvyryd@ajcvickers

Velikost trička: L

Stav: Probíhá

V době psaní textu máme 135 chyb, které je potřeba opravit ve verzi 5.0 (s již opravenou verzí 62), ale výrazně se překrývají s výše uvedenou částí Obecné vylepšení dotazů.

Příchozí míra (problémy, které končí jako práce v milníku) byla přibližně 23 problémů za měsíc v průběhu verze 3.0. Ne všechny tyto hodnoty bude nutné opravit ve verzi 5.0. Hrubý odhad plánujeme opravit dalších 150 problémů v časovém rámci 5,0.

Malá vylepšení

Sledované problémy označené type-enhancement v milníku 5.0

Vývojáři: @roji, @maumar, @bricelam, @smitpatel, @AndriySvyryd@ajcvickers

Velikost trička: L

Stav: Hotovo

Kromě větších funkcí popsaných výše máme také mnoho menších vylepšení naplánovaných na 5,0, abychom opravili "řezy papíru". Všimněte si, že mnohé z těchto vylepšení jsou také pokryty obecnějšími motivy popsanými výše.

Pod řádkem

Sledované problémy označené popiskem consider-for-next-release

Jedná se o opravy chyb a vylepšení, která nejsou aktuálně naplánovaná pro vydání verze 5.0, ale podíváme se na roztažené cíle v závislosti na průběhu výše uvedené práce.

Kromě toho při plánování vždy zvažujeme nejvíce hlasů. Řezání některého z těchto problémů z vydání je vždy bolestné, ale potřebujeme realistický plán pro prostředky, které máme.

Návrhy

Váš názor na plánování je důležitý. Nejlepším způsobem, jak označit důležitost problému, je hlasovat (palec nahoru) pro tento problém na GitHubu. Tato data se pak dostanou do procesu plánování příští verze.