Máme-li databázi, jejíž data chceme využívat v nějaké aplikaci, musíme vymyslet způsob, jak ta data mezi databází a aplikací (tam i zpět) přesouvat.
V různých dobách se používaly různé postupy pro výše stanovenou úlohu. Microsoft měl nejdříve tzv. DAO (Data Access Object). Později přišlo ADO (ActiveX Data Object). S příchodem .NETu pak ADO.NET.
Všechny uvedené technologie mají jedno společné: Práce s daty v nich nebyla zrovna příjemná, protože bylo nutné data neustále konvertovat z formátu, který se používá v .NETu (string, int, double apod.), na formát SQL serveru (NVARCHAR, INT, REAL apod.) a naopak.
Nepříjemnou práci s konverzemi datových typů a další těžkosti, které starší technologie pro připojení k databázi nabízely, vyřešilo až zapojení vrstvy aplikace, kterou jsme dřív neměli, a to tzv. objektově relačního mapování, krátce ORM. Microsoft svoji implementaci ORM nazval Entity Framework.
Tak jako existují dvě "verze" (vývojové větve) .NETu, a to starší .NET Framework (uniplatformní, pouze pro Windows) a novější .NET Core (multiplatformní, pro Windows, Linux a Mac), podobně máme i dvě varianty Entity Frameworku.
Původní varianta Entity Frameworku (nejnověji Entity Framework 6) spolupracuje s .NET Frameworkem (poslední verze je 4.7.2, případně 4.8).
Modernější varianta Entity Frameworku se jmenuje Entity Framework Core (má verzi 5.0.x a 6.0.x) a je napsána pro .NET 5.0 a .NET 6.0.
Při používání Entity Frameworku (krátce EF), potažmo jakéhokoliv ORM nástroje, se soustředíme na to, že popíšeme, které business objekty v C# odpovídají kterým tabulkám v databázi a které vlastnosti v business objektech odpovídají kterým sloupečkům v těch tabulkách.
Pak už jenom požádáme EF např. o všechny řádky z tabulky produktů, jejichž značka je třeba Miele, a jako odpověď nedostaneme žádnou sadu řádků, kterou musíme pak ručně převádět na nějakou kolekci objektů typu Product. Jako odpověď na takovýto "ORM dotaz" dostaneme rovnou kolekci těch relevatních objektů.
Nebo se rozhodneme, že chceme aktualizovat data o sušičce Miele "TWH780WP EcoSpeed". Zde opět stačí předat do EF objekt Product naplněný daty a EF již zajistí, aby se předaná data dostala do databáze tak, že sám (díky definici mapování objektů na tabulky a vlastností na sloupečky) vygeneruje potřebný DML dotaz v jazyce SQL:
UPDATE TB_PRODUCT SET MANUFACTURER = 'Miele', MODEL_NAME = 'TWH780WP EcoSpeed', PRODUCT_CATEGORY_ID = 10, UNIT_PRICE = 12999.99 WHERE ID = 3 ;
Objektově relační mapování tedy odstiňuje vývojáře od nutnosti psát dotazy v jazyce SQL, stačí předávat do ORM potřebné požadavky a ORM vytváří dotazy (SELECT, INSERT, UPDATE, DELETE) automaticky za něj.