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
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
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
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
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
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.