Sdílet prostřednictvím


Přehled entity Frameworku

Entity Framework je sada technologií v ADO.NET, které podporují vývoj softwarových aplikací orientovaných na data. Architekti a vývojáři aplikací orientovaných na data se snažili dosáhnout dvou velmi různých cílů. Musí modelovat entity, vztahy a logiku obchodních problémů, které řeší, a musí také pracovat s datovými moduly používanými k ukládání a načítání dat. Data mohou zahrnovat více systémů úložiště, z nichž každý má vlastní protokoly; dokonce i aplikace, které pracují s jedním systémem úložiště, musí vyrovnávat požadavky systému úložiště s požadavky na zápis efektivního a udržovatelného kódu aplikace.

Entity Framework umožňuje vývojářům pracovat s daty ve formě objektů a vlastností specifických pro doménu, jako jsou zákazníci a adresy zákazníků, aniž by se museli zabývat podkladovými databázovými tabulkami a sloupci, ve kterých jsou tato data uložená. S Entity Framework mohou vývojáři pracovat na vyšší úrovni abstrakce při práci s daty a mohou vytvářet a udržovat aplikace orientované na data s menším kódem než v tradičních aplikacích. Vzhledem k tomu, že Entity Framework je součástí rozhraní .NET Framework, můžou aplikace Entity Framework běžet na libovolném počítači, na kterém je nainstalované rozhraní .NET Framework počínaje verzí 3.5 SP1.

Dejte život modelům

Dlouhodobý a běžný přístup návrhu při vytváření aplikace nebo služby je rozdělení aplikace nebo služby do tří částí: doménový model, logický model a fyzický model. Doménový model definuje entity a relace v systému, který se modeluje. Logický model relační databáze normalizuje entity a relace do tabulek s omezeními cizího klíče. Fyzický model řeší možnosti konkrétního datového modulu zadáním podrobností o úložišti, jako je dělení a indexování.

Fyzický model je zpřesněný správci databází, aby zlepšili výkon, ale programátoři, kteří zapisují kód aplikace, se primárně omezují na práci s logickým modelem tím, že zapisují dotazy SQL a volají uložené procedury. Doménové modely se obecně používají jako nástroj pro zachycení a komunikaci požadavků aplikace, často jako inertované diagramy, které jsou zobrazeny a diskutovány v počátečních fázích projektu a následně opuštěny. Mnoho vývojových týmů přeskočí vytvoření konceptuálního modelu a začne zadáním tabulek, sloupců a klíčů v relační databázi.

Entity Framework poskytuje život modelům tím, že vývojářům umožňuje dotazovat se na entity a vztahy v doménovém modelu (označovaný jako konceptuální model v Entity Frameworku) a zároveň se spoléhat na entity Framework, aby tyto operace přeložily na příkazy specifické pro zdroj dat. To uvolní aplikace z pevně zakódovaných závislostí na konkrétním zdroji dat.

Při práci s Code First se koncepční model mapuje na model úložiště v kódu. Entity Framework může odvodit koncepční model založený na typech objektů a dalších konfiguracích, které definujete. Metadata mapování se generují během běhu na základě kombinace toho, jak jste definovali typy domény a další konfigurační informace, které zadáte v kódu. Entity Framework vygeneruje databázi podle potřeby na základě metadat. Další informace najdete v tématu Vytvoření modelu.

Při práci s nástroji Entity Data Model Tools se koncepční model, model úložiště a mapování mezi nimi vyjadřují ve schématech založených na JAZYCE XML a jsou definovány v souborech, které mají odpovídající přípony názvů:

  • Koncepční jazyk definice schématu (CSDL) definuje koncepční model. CSDL je implementace entity Data Model Entity Framework. Přípona souboru je .csdl.

  • Store schema definition language (SSDL) definuje model úložiště, který se také nazývá logický model. Přípona souboru je .ssdl.

  • Jazyk MSL (Mapping Specification Language) definuje mapování mezi úložištěm a koncepčními modely. Přípona souboru je .msl.

Model úložiště a mapování se můžou podle potřeby měnit bez nutnosti změn koncepčního modelu, datových tříd nebo kódu aplikace. Vzhledem k tomu, že modely úložiště jsou specifické pro poskytovatele, můžete pracovat s konzistentním koncepčním modelem napříč různými zdroji dat.

Entity Framework používá tyto modely a mapovací soubory k vytváření, čtení, aktualizaci a odstraňování operací s entitami a relacemi v koncepčním modelu na ekvivalentní operace ve zdroji dat. Entity Framework dokonce podporuje mapování entit v koncepčním modelu na uložené procedury ve zdroji dat. Další informace naleznete v tématu CSDL, SSDL a MSL specifikace.

Mapování objektů na data

Objektově orientované programování představuje výzvu pro interakci se systémy úložiště dat. I když organizace tříd často zrcadlí uspořádání tabulek relačních databází, fit není ideální. Více normalizovaných tabulek často odpovídá jedné třídě a relace mezi třídami jsou často reprezentovány odlišně než relace mezi tabulkami. Například k reprezentaci zákazníka pro prodejní objednávku Order může třída použít vlastnost, která obsahuje odkaz na instanci Customer třídy, zatímco Order řádek tabulky v databázi obsahuje sloupec cizího klíče (nebo sadu sloupců) s hodnotou, která odpovídá hodnotě primárního klíče v Customer tabulce. Customer Třída může mít vlastnost s názvemOrders, která obsahuje kolekci instancí Order třídy, zatímco Customer tabulka v databázi nemá žádný srovnatelný sloupec. Entity Framework poskytuje vývojářům flexibilitu, jak tímto způsobem znázornit relace, nebo přesněji modelovat relace, které jsou reprezentovány v databázi.

Stávající řešení se pokusila tuto mezeru překlenout, což se často označuje jako "neshoda impedance", pouze mapováním objektů orientovaných tříd a vlastností na relační tabulky a sloupce. Místo tohoto tradičního přístupu mapuje Entity Framework relační tabulky, sloupce a omezení cizího klíče v logických modelech na entity a relace v koncepčních modelech. To umožňuje větší flexibilitu při definování objektů a optimalizaci logického modelu. Nástroje Entity Data Model generují rozšiřitelné datové třídy založené na konceptuálním modelu. Tyto třídy jsou částečné třídy, které lze rozšířit o další členy, které vývojář přidá. Ve výchozím nastavení jsou třídy generované pro konkrétní koncepční model odvozeny od základních tříd, které poskytují služby pro materializaci entit jako objektů a pro sledování a ukládání změn. Vývojáři mohou tyto třídy použít k práci s entitami a vztahy jako objekty související s přidruženími. Vývojáři mohou také přizpůsobit třídy, které jsou generovány pro koncepční model. Další informace naleznete v tématu Práce s objekty.

Přístup k datům entit a jejich změna

Více než jen jiné řešení mapování objektově-relační, Entity Framework je v podstatě o tom, jak aplikacím umožnit přístup k datům, která jsou reprezentovaná jako entity a vztahy v konceptuálním modelu. Entity Framework používá informace v modelu a mapovací soubory k překladu dotazů na objekty na typy entit reprezentované v koncepčním modelu do dotazů specifických pro zdroj dat. Výsledky dotazu jsou materializovány do objektů, které entity Framework spravuje. Entity Framework poskytuje následující způsoby dotazování konceptuálního modelu a vrácení objektů:

  • LINQ to Entities. Poskytuje podporu jazykově integrovaných dotazů (LINQ) pro dotazování typů entit definovaných v konceptuálním modelu. Další informace naleznete v tématu LINQ to Entities.

  • Entity SQL Dialekt SQL nezávislý na úložišti, který pracuje přímo s entitami v konceptuálním modelu a který podporuje koncepty modelu Entity Data Model. Entity SQL se používá s dotazy na objekty i dotazy, které se spouští pomocí zprostředkovatele EntityClient. Další informace najdete v tématu Přehled entity SQL.

Entity Framework obsahuje zprostředkovatele dat EntityClient. Tento poskytovatel spravuje připojení, převádí dotazy entit na dotazy specifické pro zdroj dat a vrací čtečku dat, kterou Entity Framework používá k materializaci dat entit do objektů. Pokud se nevyžaduje materializace objektů, je možné poskytovatele EntityClient použít také jako standardní ADO.NET zprostředkovatele dat tím, že aplikacím umožníte spouštět dotazy Entity SQL a využívat vrácenou čtečku dat jen pro čtení. Další informace naleznete v tématu EntityClient Provider for the Entity Framework.

Následující diagram znázorňuje architekturu Entity Framework pro přístup k datům:

Entity Framework Architectural Diagram

Nástroje Entity Data Model můžou generovat třídu odvozenou z System.Data.Objects.ObjectContext kontejneru entit nebo System.Data.Entity.DbContext představující kontejner entit v konceptuálním modelu. Tento kontext objektu poskytuje možnosti pro sledování změn a správu identit, souběžnosti a vztahů. Tato třída také zveřejňuje metodu SaveChanges , která do zdroje dat zapisuje vložení, aktualizace a odstranění. Podobně jako dotazy se tyto změny provádějí buď příkazy automaticky vygenerovaným systémem, nebo uloženými procedurami určenými vývojářem.

Poskytovatelé dat

EntityClient Zprostředkovatel rozšiřuje model poskytovatele ADO.NET přístupem k datům z hlediska konceptuálních entit a relací. Spouští dotazy, které používají Entity SQL. Entity SQL poskytuje základní dotazovací jazyk, který umožňuje EntityClient komunikaci s databází. Další informace naleznete v tématu EntityClient Provider for the Entity Framework.

Entity Framework obsahuje aktualizovaný Zprostředkovatel dat SqlClient, který podporuje kanonické stromy příkazů. Další informace naleznete v tématu SqlClient pro Entity Framework.

Nástroje datového modelu entit

Spolu s modulem runtime Entity Framework obsahuje Visual Studio nástroje pro mapování a modelování. Další informace naleznete v tématu Modelování a mapování.

Další informace

Další informace o rozhraní Entity Framework najdete tady:

Začínáme – poskytuje informace o tom, jak rychle začít pracovat pomocí rychlého startu, který ukazuje, jak vytvořit jednoduchou aplikaci Entity Framework.

Terminologie Entity Framework – definuje mnoho termínů, které zavádí model Entity Data Model a Entity Framework a které se používají v dokumentaci entity Framework.

Prostředky Entity Framework – poskytuje odkazy na koncepční témata a odkazy na externí témata a zdroje informací pro vytváření aplikací Entity Framework.

Viz také