LINQ és ADO.NET

Ma sok üzleti fejlesztőnek két (vagy több) programozási nyelvet kell használnia: egy magas szintű nyelvet az üzleti logikához és a bemutatórétegekhez (például Visual C# vagy Visual Basic), valamint egy lekérdezési nyelvet az adatbázis használatához (például Transact-SQL). Ehhez a fejlesztőnek több nyelven is hatékonynak kell lennie, és nyelvi eltéréseket is okoz a fejlesztői környezetben. Egy adatelérési API-t használó alkalmazás például idézőjelek használatával sztringkonstansként adja meg a lekérdezést. Ez a lekérdezési sztring olvashatatlan a fordító számára, és nem ellenőrzi a hibákat, például érvénytelen szintaxist, vagy hogy a hivatkozott oszlopok vagy sorok valóban léteznek-e. Nincs típusellenőrzés a lekérdezési paramétereken, és nincs IntelliSense támogatás sem.

A nyelvvel integrált lekérdezés (LINQ) lehetővé teszi a fejlesztők számára, hogy set-alapú lekérdezéseket hozzanak létre az alkalmazáskódjukban anélkül, hogy külön lekérdezési nyelvet kellene használniuk. LINQ-lekérdezéseket számos, az interfészt implementáló IEnumerable adatforrásra írhat, például memóriabeli adatstruktúrákra, XML-dokumentumokra, SQL-adatbázisokra és DataSet objektumokra. Bár ezek az enumerálható adatforrások különböző módokon implementálva vannak, mind ugyanazt a szintaxist és nyelvi szerkezetet teszik elérhetővé. Mivel a lekérdezések a programozási nyelven is létrehozhatóak, nem kell más olyan lekérdezési nyelvet használnia, amely sztringkonstansként van beágyazva, és amelyet a fordító nem tud értelmezni vagy ellenőrizni. A lekérdezések programozási nyelvbe való integrálása lehetővé teszi a Visual Studio programozói számára a fordítási idő típusának és szintaxisának ellenőrzését, valamint IntelliSensea . Ezek a funkciók csökkentik a lekérdezések hibakeresésének és hibajavításának szükségességét.

Az adatok SQL-táblákból a memóriában lévő objektumokba való átvitele gyakran fárasztó és hibalehetőséget jelent. A LINQ által dataSetté, a LINQ-t SQL-nek implementált LINQ-szolgáltató pedig -alapú objektumgyűjteményekké alakítja át a forrásadatokat IEnumerable. A programozó mindig gyűjteményként IEnumerable tekint az adatokra, mind a lekérdezéskor, mind a frissítéskor. A rendszer teljes körű IntelliSense támogatást nyújt a lekérdezések írásához ezekhez a gyűjteményekhez.

Három különböző ADO.NET nyelvvel integrált lekérdezési (LINQ) technológia létezik: LINQ–Adathalmaz, LINQ–SQL, linq to Entities. A LINQ to DataSet gazdagabb, optimalizált lekérdezést biztosít az SQL és a LINQ és az DataSet SQL között, így közvetlenül lekérdezheti az SQL Server adatbázissémáit, a LINQ-t pedig az entitásokhoz, így egy entitás adatmodellt kérdezhet le.

Az alábbi ábra áttekintést nyújt arról, hogy a ADO.NET LINQ-technológiák hogyan kapcsolódnak a magas szintű programozási nyelvekhez és a LINQ-kompatibilis adatforrásokhoz.

LINQ to ADO.NET overview

A LINQ-ról további információt a Language Integrated Query (LINQ) című témakörben talál.

Az alábbi szakaszok további információt nyújtanak a LINQ-ról az Adatkészlethez, a LINQ-ról az SQL-hez és a LINQ-ról az entitásokra vonatkozóan.

LINQ–DataSet

Ez DataSet a leválasztott programozási modell kulcsfontosságú eleme, amely ADO.NET épül, és széles körben használják. A LINQ to DataSet lehetővé teszi a fejlesztők számára, hogy gazdagabb lekérdezési képességeket építsenek ki DataSet ugyanazzal a lekérdezés-készítési mechanizmussal, amely számos más adatforráshoz is elérhető. További információ: LINQ to DataSet.

LINQ to SQL

A LINQ–SQL hasznos eszköz olyan fejlesztők számára, akik nem igényelnek leképezést egy elméleti modellhez. A LINQ-t az SQL-hez használva a LINQ programozási modellt közvetlenül a meglévő adatbázissémán keresztül használhatja. A LINQ–SQL lehetővé teszi a fejlesztők számára .NET-keretrendszer adatosztályok létrehozását. A koncepcionális adatmodellre való leképezés helyett ezek a létrehozott osztályok közvetlenül adatbázistáblákra, nézetekre, tárolt eljárásokra és felhasználó által definiált függvényekre vannak leképezve.

A LINQ és az SQL használatával a fejlesztők közvetlenül a tárolási sémába írhatnak kódot ugyanazzal a LINQ-programozási mintával, mint a memóriabeli gyűjtemények és a DataSettöbbi adatforrás, például az XML mellett. További információ: LINQ–SQL.

LINQ –entitások

A legtöbb alkalmazás jelenleg a relációs adatbázisokra van írva. Egy bizonyos ponton ezeknek az alkalmazásoknak relációs formában kell kezelniük az adatokat. Az adatbázissémák nem mindig ideálisak alkalmazások létrehozásához, és az alkalmazás fogalmi modelljei nem azonosak az adatbázisok logikai modellel. Az entitásadat-modell egy elméleti adatmodell, amely egy adott tartomány adatainak modellezésére használható, így az alkalmazások objektumként kezelhetik az adatokat. További információ: ADO.NET Entity Framework.

Az entitásadat-modellen keresztül a relációs adatok objektumként lesznek közzétéve a .NET-környezetben. Így az objektumréteg ideális célként szolgál a LINQ támogatásához, így a fejlesztők az üzleti logika létrehozásához használt nyelvről hozhatnak létre lekérdezéseket az adatbázissal kapcsolatban. Ezt a képességet linq to Entities néven ismerjük. További információ: LINQ to Entities.

Lásd még