Language Integrated Query (LINQ) on Microsoftin projekti , joka lisää SQL :n kaltaisen kyselykielen syntaksin .NET Frameworkin ohjelmointikieliin . Aikaisemmin toteutettu C# - ja Visual Basic .NET -versioissa . Monet LINQ:n esittelemistä käsitteistä testattiin alun perin Microsoft Cω -tutkimusprojektissa .
LINQ julkaistiin Visual Studio 2008:n kanssa marraskuun 2007 lopussa. LINQ-kyselyjen nopeaan luomiseen ja virheenkorjaukseen on olemassa erikoisapuohjelma nimeltä LINQPad .
Joitakin uusia kieliominaisuuksia käyttämällä LINQ antaa sinun käyttää SQL:n kaltaista syntaksia suoraan ohjelman koodissa, esimerkiksi C#:lla:
LINQ tukee natiivisti muistiobjektien, relaatiotietokantojen ja XML -tietojen kokoelmien kyselymoottoria, ja siinä on laajennettava arkkitehtuuri, jonka avulla kolmannen osapuolen kehittäjät voivat käyttää tietovarastoitaan LINQ-moottorin kautta. Tätä varten sinun on otettava käyttöön vakiokyselyoperaattoreita käyttämällä laajennusmenetelmiä tai otettava käyttöön IQueryable- liitäntä , jonka avulla voit jäsentää lausekepuun ajon aikana ja kääntää sen kyselykielellesi. Yhteisössä on esimerkki tavallisten kyselyoperaattoreiden mukautetusta toteutuksesta. [yksi]
Esimerkiksi LINQ for SQL (aiemmin DLinq), joka kääntää LINQ-lausekkeet SQL-kyselyiksi tietokantaa vasten, käyttää kääntäjän kykyä rakentaa lausekepuu ohjelmakontekstin perusteella funktion delegaattien luomisen sijaan. Kun kyselyä kuvaava lausekepuu on annettu, erikoistunut tietokannan tarjoaja voi jäsentää sen ja kääntää sen kyselyksi tietokantaan sopivalla kielellä, kuten Microsoft SQL Server, Jet (jota käytetään Microsoft Accessissa) tai millä tahansa muulla. Jotkut harrastajat ovat jo luoneet LINQ-konseptikirjastoja WMI :n [2] , RSS :n , LDAP :n [3] , ADO.NET - tietokokoelmien , Amazon Web Services [4] ja SharePointin [5] kyselyjä varten tällä taktiikalla .
Microsoftin nykyinen esikatselu sisältää myös LINQ for XML -toteutuksen (aiemmin XLinq), mikä helpottaa XML-dokumentin tietojen rakentamista ja purkamista samankaltaisilla menetelmillä. Lisäksi Microsoft työskentelee ADO.NET vNextissä, joka tunnetaan myös nimellä LINQ to Entities.
Vuoden 2008 lopussa vastuu LINQ to SQL:n ja ADO.NET Entity Frameworkin (mukaan lukien LINQ to Entities) kehittämisestä siirtyi ADO.NET-kehitystiimille (ns. ADO.NET-tiimi). kun taas aiemmin LINQ to SQL kehitti tiimi, joka liittyi C# -kielen kääntäjän kehittämiseen [6] . Näin kävi selväksi, että molemmat ratkaisut tähtäävät samojen ongelmien ratkaisemiseen ja kilpailevat siten keskenään. Hieman myöhemmin Tim Mallelew selvensi, että Microsoft jatkaa LINQ:n kehittämistä SQL:hen käyttäjien palautteen perusteella. NET 4.0:sta alkaen suositeltu ratkaisu on kuitenkin LINQ to Entities. Lisäksi käyttäjien syötteen perusteella LINQ to SQL:n yleisimmin käytetyt ominaisuudet lisätään LINQ to Entitiesiin [7] . Tämän seurauksena ratkaisut yhdistetään asteittain.
Asiantuntijat kannattivat yleensä tätä päätöstä. Joten esimerkiksi Marco Russo, vaikka hän teki varauksen, jonka mukaan LINQ to Entitiesiin siirtyminen ei saisi tapahtua aikaisemmin kuin siitä tulee täysimittainen LINQ:n korvaaminen SQL:lle, totesi kuitenkin, että kahden osittain päällekkäisen kehyksen yhdistäminen on hyvä idea, mutta samaan aikaan niiden käyttäjien, jotka ovat tottuneet käyttämään ratkaisujen "hylättyjä" osia, ei pitäisi kärsiä [6] .
Se ei ole muuta kuin funktionaalista ohjelmointia , joka on naamioitu SQL [8] -syntaksiksi .
LINQ-kirjasto sisältää SQLMetal-työkalun, jonka avulla voit luoda automaattisesti luokkia suoraan .NET Frameworkin tukemista tietokannoista, mikä tekee tietokantakokonaisuuksien integroimisesta koodiin erittäin nopeaa ja helppoa. Vaihtoehtona on Visual Studion mukana tuleva relaatioobjektien suunnittelija, mutta sitä voidaan käyttää vain Microsoft SQL Serverin kanssa.
.NETTO | |
---|---|
Toteutukset | |
Arkkitehtuuri | |
Infrastruktuuri | |
Microsoftin kielet | |
Muut kielet | |
Windows Foundations | |
Komponentit | |
Vertailut |
|
Tulevaisuuden teknologiat | |
Tietolähteet |