Entity Framework

ORM framework pro ADO.NET

Entity Framework (EF) je open source[1] framework objektově relační mapování (ORM) pro ADO.NET. Původně byl nedílná součást .NET Frameworku. Od Entity Framework verze 6 byl separován od .NET Frameworku a je dodáván samostatně.

Entity Framework
Vývojář.NET Foundation
První vydání11. srpna 2008
Aktuální verzeEntity Framework 6: v6.4.4
Entity Framework Core: v5.0.0
Platforma.NET Framework,
.NET Core
Vyvíjeno vC#
Typ softwaruORM
LicenceLicence Apache 2.0
Webmsdn.microsoft.com/en-us/data/ef.aspx
Některá data mohou pocházet z datové položky.

Přehled editovat

Entity Framework je sada technologií v ADO.NET, které podporují vývoj datově orientovaných softwarových aplikací. Architekti a vývojáři datově orientovaných aplikací se obvykle potýkali s potřebou dosáhnout dvou velmi odlišných cílů. Musí modelovat entity, vztahy a logiku obchodních problémů, které řeší, a musí také pracovat s tzv. storage engine používanými k ukládání a načítání dat. Data mohou zahrnovat více úložných systémů, každý s vlastními protokoly; dokonce i aplikace, které pracují s jediným úložným systémem, musí vyvážit požadavky úložného systému na požadavky psaní efektivního a udržovatelného aplikačního kódu. Tento problém se obecně označuje jako „nesoulad objektově-relační impedance“.

Bylo vyvinuto mnoho nástrojů objektově relačního mapování (ORM)(neboli „objektově-relačních správců“), které vývojářům umožňují pracovat s daty ve formě doménově-specifických objektů a vlastností, jako jsou zákazníci a adresy zákazníků, aniž by se museli zaobírat se základními databázovými tabulkami a sloupci, kde jsou tato data uložena. S ORM mohou vývojáři při práci s daty pracovat na vyšší úrovni abstrakce a mohou vytvářet a snadno udržovat datově orientované aplikace s kratším a přehlednějším zápisem kódu než v tradičních aplikacích. Entity Framework je aktuálně propagovaným řešením v rámci vývoje od společnosti Microsoft.[2]

Historie editovat

První verze Entity Framework (EFv1) byla součástí.NET Framework 3.5 Service Pack 1 a Visual Studio 2008 Service Pack 1, vydaného 11. srpna 2008. Tato verze byla široce kritizována, dokonce odstartovala „hlasování o nedůvěře“, které bylo podepsáno nejméně jedním tisícem vývojářů.[3]

Druhá verze Entity Framework, pojmenovaná Entity Framework 4.0 (EFv4), byla vydána jako součást .NET 4.0 dne 12. dubna 2010.[4]

Třetí verze Entity Framework, verze 4.1, byla vydána 12. dubna 2011 s podporou Code First.

Aktualizace verze 4.1 s názvem Entity Framework 4.1 Update 1 byla vydána 25. července 2011. Obsahuje opravy chyb a nové podporované typy.

Verze 4.3.1 byla vydána 29. února 2012.[5] Došlo k mnoha vylepšením, například k podpoře migrace.

Verze 5.0.0 byla vydána 11. srpna 2012[6] a je zaměřena na rozhraní .NET Framework 4.5. Tato verze je také k dispozici pro .NET framework 4, ale bez jakékoliv výhody v době běhu programu oproti verzi 4.

Verze 6.0 byla vydána 17. října 2013[7] a nyní je open source projektem pod licencí Apache License v2. Stejně jako ASP.NET MVC je jeho zdrojový kód na GitHubu. Tato verze obsahuje řadu vylepšení pro podporu Code First.[8]

Microsoft se poté rozhodl pro modernizovat a přišel s multiplatformní podporou na Linux, OSX a jiné, což znamená, že pro vznik další verze Entity Framework musel být celý kód EF přepsán. Dne 27. června 2016 byla vydána nová verze jako Entity Framework Core 1.0, společně s ASP.NET Core 1.0 a .NET Core 1.0.[9] Původně byl pojmenován jako Entity Framework 7, ale přejmenovali ho, aby zdůraznili, že se jednalo spíše jen o úplné přepsání než o přírůstkový upgrade a nenahrazuje EF6.

Entity Framework Core 1.0 je pod licencí Apache License v2 a je vyvíjen zcela přístupně na platformě GitHub. Zatímco Entity Framework Core 1.0 sdílí některé koncepční podobnosti s předchozími verzemi Entity Framework, jedná se o zcela novou základnu kódu navrženou tak, aby byla efektivnější, výkonnější, flexibilnější a rozšiřitelnější, který bude fungovat v systémech Windows, Linux, OSX a bude podporovat celou řadu relačních a NoSQL datových úložišť.[10]

Entity Framework Core 2.0 byl vydán 14. srpna 2017 spolu s Visual Studio 2017 15.3 a ASP.NET Core 2.0.[11]

Entity Framework Core 3.0 byl vydán 23. září 2019 spolu s Visual Studio 2019 16.3 a ASP.NET Core 3.0.[12]

Entity Framework Core 3.1 (EF Core 3.1) byl oficiálně vydán pro produkční užití 3. prosince 2019 a bude preferovanou a dlouhodobě podporovanou verzí minimálně do 3. prosince 2022.[13][14]

Dotazování na data editovat

Entity SQL editovat

ADO.NET Entity Framework používá variantu strukturovaného dotazovacího jazyka s názvem Entity SQL, která je zaměřena na psaní deklarativních dotazů, na aktualizaci přes entity, a na vztahu entit – na koncepční úrovni. Liší se od SQL v tom, že nemá explicitní konstrukce pro JOIN, protože EDM je navrženo k abstraktnímu dělení dat napříč tabulkami.

Dotazování na koncepční model usnadňují třídy EntityClient, která přijímá dotaz Entity SQL. Pipeline rozebere Entity SQL dotaz do stromu příkazů a rozděluje dotaz mezi více tabulek, které jsou pak předány poskytovateli EntityClient. Stejně jako poskytovatelé dat ADO.NET je poskytovatel EntityClient také inicializován za pomocí objektu Connection, který kromě obvyklých parametrů úložiště dat a informací o ověřování vyžaduje SDL schéma a informace o mapování. Zprostředkovatel EntityClient pak zase změní strom příkazů Entity SQL na dotaz SQL v nativní verzi databáze. Provedení dotazu pak vrátí Entity SQL ResultSet, který není omezen na tabulkovou strukturu, na rozdíl od ADO.NET ResultSets.

Entity SQL vylepšuje SQL přidáním vlastní podpory pro:

  • Typy, protože entity ADO.NET jsou typované.
  • Sady entit, se kterými se pracuje jako s kolekcemi.
  • Složitost, která odstraňuje omezení, kde lze použít poddotazy.

LINQ editovat

LINQ usnadňuje transformaci, třídění a propojování dat a vyhledávání v nich.

Poskytovatel LINQ to Entities umožňuje LINQ použít k dotazování na různé zdroje dat RDBMS. K dispozici je několik poskytovatelů specifických pro databázový server s podporou Entity Framework.

Související články editovat


Odkazy editovat

Reference editovat

  1. KRILL, Paul. Microsoft open-sources Entity Framework. InfoWorld [online]. 2012-07-20 [cit. 2020-12-19]. Dostupné online. (anglicky) 
  2. STEVESTEIN. Entity Framework Overview - ADO.NET. docs.microsoft.com [online]. [cit. 2020-12-19]. Dostupné online. (anglicky) 
  3. ADO .NET Entity Framework Vote of No Confidence. efvote.wufoo [online]. [cit. 2020-12-19]. Dostupné online. (anglicky) [nedostupný zdroj]
  4. ADO.NET team blog : Update on the Entity Framework in .NET 4 and Visual Studio 2010. web.archive.org [online]. 2010-01-20 [cit. 2020-12-19]. Dostupné v archivu pořízeném z originálu dne 2010-01-20. 
  5. EF4.3.1 and EF5 Beta 1 Available on NuGet - ADO.NET team blog - Site Home - MSDN Blogs. web.archive.org [online]. 2012-03-25 [cit. 2020-12-19]. Dostupné v archivu pořízeném z originálu dne 2012-03-25. 
  6. CodePlex Archive. CodePlex Archive [online]. [cit. 2020-12-19]. Dostupné online. 
  7. EF6 RTM Available - ADO.NET Blog - Site Home - MSDN Blogs. web.archive.org [online]. 2014-03-30 [cit. 2020-12-19]. Dostupné v archivu pořízeném z originálu dne 2014-03-30. 
  8. Co je nového – EF6. docs.microsoft.com [online]. [cit. 2020-12-19]. Dostupné online. 
  9. Announcing Entity Framework Core 1.0. .NET Blog [online]. 2016-06-27 [cit. 2020-12-19]. Dostupné online. (anglicky) 
  10. EF7 - New Platforms, New Data Stores - ADO.NET Blog - Site Home - MSDN Blogs. web.archive.org [online]. 2015-09-29 [cit. 2020-12-19]. Dostupné v archivu pořízeném z originálu dne 2015-09-29. 
  11. Announcing .NET Core 2.0. .NET Blog [online]. 2017-08-14 [cit. 2020-12-19]. Dostupné online. (anglicky) 
  12. Announcing .NET Core 3.0. .NET Blog [online]. 2019-09-23 [cit. 2020-12-19]. Dostupné online. (anglicky) 
  13. AJCVICKERS. EF Core releases and planning. docs.microsoft.com [online]. [cit. 2020-12-19]. Dostupné online. (anglicky) 
  14. Microsoft.EntityFrameworkCore 5.0.1. www.nuget.org [online]. [cit. 2020-12-19]. Dostupné online. (anglicky) 

Literatura editovat

Externí odkazy editovat