Sdílet prostřednictvím


LINQ a ADO.NET

V současnosti musí mnoho obchodních vývojářů používat dva (nebo více) programovacích jazyků: jazyk vysoké úrovně pro obchodní logiku a prezentační vrstvy (například Visual C# nebo Visual Basic) a dotazovací jazyk pro interakci s databází (například Transact-SQL). To vyžaduje, aby vývojář byl zkušený v několika jazycích, aby byl efektivní, a také způsobuje neshody jazyků ve vývojovém prostředí. Například aplikace, která používá rozhraní API pro přístup k datům k provedení dotazu v databázi, určuje dotaz jako řetězcový literál pomocí uvozovek. Tento řetězec dotazu není pro kompilátor čitelný a nekontroluje chyby, jako je neplatná syntaxe nebo jestli sloupce nebo řádky, na které odkazuje, skutečně existují. Neexistuje žádná kontrola typů parametrů dotazu a žádná IntelliSense podpora.

Jazykově integrovaný dotaz (LINQ) umožňuje vývojářům v kódu aplikace vytvořit dotazy založené na sadách, aniž by museli používat samostatný dotazovací jazyk. Můžete psát dotazy LINQ na různé výčtové zdroje dat (tj. zdroj dat, který implementuje IEnumerable rozhraní), jako jsou datové struktury v paměti, dokumenty XML, databáze SQL a DataSet objekty. I když jsou tyto výčtové zdroje dat implementovány různými způsoby, všechny zpřístupňují stejnou syntaxi a jazykové konstrukce. Vzhledem k tomu, že dotazy lze vytvořit v samotném programovacím jazyce, nemusíte používat jiný dotazovací jazyk, který je vložený jako řetězcové literály, které kompilátor nedokáže pochopit ani ověřit. Integrace dotazů do programovacího jazyka také umožňuje programátorům sady Visual Studio zvýšit produktivitu tím, že poskytují typ kompilace a kontrolu syntaxe a IntelliSense. Tyto funkce snižují potřebu ladění dotazů a oprav chyb.

Přenos dat z tabulek SQL do objektů v paměti je často zdlouhavý a náchylný k chybám. Zprostředkovatel LINQ implementovaný linQ to DataSet a LINQ to SQL převede zdrojová data na IEnumerablekolekce objektů založené na. Programátor vždy zobrazí data jako IEnumerable kolekci, a to jak při dotazování, tak při aktualizaci. Úplná IntelliSense podpora je poskytována pro psaní dotazů na tyto kolekce.

Existují tři samostatné technologie ADO.NET jazykově integrovaných dotazů (LINQ): LINQ to DataSet, LINQ to SQL a LINQ to Entities. LINQ to DataSet poskytuje bohatší a optimalizované dotazování přes DataSet SQL a LINQ to SQL umožňuje přímo dotazovat schémata databáze SQL Serveru a LINQ to Entities umožňuje dotazování modelu Entity Data Model.

Následující diagram obsahuje přehled o tom, jak ADO.NET technologie LINQ souvisejí s programovacími jazyky vysoké úrovně a zdroji dat s podporou LINQ.

LINQ to ADO.NET overview

Další informace o LINQ naleznete v tématu Jazyk integrovaný dotaz (LINQ).

Následující části obsahují další informace o LINQ to DataSet, LINQ to SQL a LINQ to Entities.

LINQ to DataSet

Jedná se DataSet o klíčový prvek odpojeného programovacího modelu, který ADO.NET je postaven a je široce používán. LINQ to DataSet umožňuje vývojářům vytvářet bohatší možnosti DataSet dotazů pomocí stejného mechanismu formulace dotazů, který je k dispozici pro mnoho dalších zdrojů dat. Další informace naleznete v tématu LINQ to DataSet.

Technologie LINQ to SQL

LINQ to SQL je užitečný nástroj pro vývojáře, kteří nevyžadují mapování na koncepční model. Pomocí LINQ to SQL můžete použít programovací model LINQ přímo nad existujícím schématem databáze. LINQ to SQL umožňuje vývojářům generovat třídy rozhraní .NET Framework, které představují data. Místo mapování na koncepční datový model se tyto generované třídy mapují přímo na databázové tabulky, zobrazení, uložené procedury a uživatelem definované funkce.

S LINQ to SQL mohou vývojáři psát kód přímo proti schématu úložiště pomocí stejného programovacího vzoru LINQ jako kolekce v paměti a DataSetkromě jiných zdrojů dat, jako je XML. Další informace najdete v tématu LINQ to SQL.

LINQ to Entities

Většina aplikací je aktuálně napsaná nad relačními databázemi. V určitém okamžiku budou tyto aplikace muset pracovat s daty reprezentovanými v relační podobě. Schémata databáze nejsou vždy ideální pro vytváření aplikací a koncepční modely aplikací nejsou stejné jako logické modely databází. Model Entity Data Model je koncepční datový model, který lze použít k modelování dat konkrétní domény, aby aplikace mohly pracovat s daty jako objekty. Další informace najdete v tématu ADO.NET Entity Framework.

Prostřednictvím modelu Entity Data Model se relační data zveřejňují jako objekty v prostředí .NET. Díky tomu je vrstva objektu ideálním cílem pro podporu LINQ, což vývojářům umožňuje formulovat dotazy na databázi z jazyka použitého k vytvoření obchodní logiky. Tato funkce se označuje jako LINQ to Entities. Další informace naleznete v tématu LINQ to Entities.

Viz také