Language Integrated Query (LINQ) är ett Microsoft- projekt för att lägga till SQL -liknande frågespråksyntax till .NET Framework- programmeringsspråken . Tidigare implementerad i C# och Visual Basic .NET . Många av koncepten som LINQ introducerar testades ursprungligen i forskningsprojektet Microsoft Cω .
LINQ släpptes med Visual Studio 2008 i slutet av november 2007. För att snabbt skapa och felsöka LINQ-frågor finns det ett specialiserat verktyg som heter LINQPad .
Med hjälp av några nya språkfunktioner låter LINQ dig använda SQL-liknande syntax direkt i koden för ett program skrivet, till exempel i C#:
LINQ stöder en frågemotor för samlingar av objekt i minnet, relationsdatabaser och XML -data och har en utökningsbar arkitektur som tillåter tredjepartsutvecklare att komma åt sina datalager via LINQ-motorn. För att göra detta måste du implementera standardfrågeoperatorer med förlängningsmetoder, eller implementera IQueryable- gränssnittet , som låter dig analysera uttrycksträdet under körning och översätta det till ditt frågespråk. Det finns ett exempel på en anpassad implementering av standardfrågeoperatorer i gemenskapen. [ett]
Till exempel använder LINQ för SQL (tidigare DLinq), som översätter LINQ-uttryck till SQL-frågor mot en databas, kompilatorns förmåga att bygga ett uttrycksträd baserat på programkontext snarare än att skapa funktionsdelegater. Med ett uttrycksträd som beskriver en fråga kan en specialiserad databasleverantör analysera den och översätta den till en fråga på lämpligt språk för databasen, som Microsoft SQL Server, Jet (som används i Microsoft Access) eller någon annan. Vissa entusiaster har redan skapat LINQ proof-of-concept-bibliotek för att fråga WMI [2] , RSS , LDAP [3] , ADO.NET - datainsamlingar , Amazon Web Services [4] och SharePoint [5] med denna taktik .
Den befintliga förhandsvisningen från Microsoft inkluderar även en implementering av LINQ för XML (tidigare kallad Xlinq), vilket gör det mycket lättare att bygga och extrahera data från ett XML-dokument med liknande tillvägagångssätt. Dessutom arbetar Microsoft på ADO.NET vNext, även känd som LINQ to Entities.
I slutet av 2008 flyttades ansvaret för utvecklingen av LINQ till SQL, tillsammans med ADO.NET Entity Framework (inklusive LINQ till Entities), till ADO.NET-utvecklingsteamet (det så kallade ADO.NET-teamet). medan tidigare LINQ till SQL utvecklades av ett team som var associerat med utvecklingen av en kompilator för C# -språket [6] . Därmed blev det uppenbart att båda lösningarna syftar till att lösa samma problem och därför kommer att konkurrera med varandra. Lite senare klargjorde Tim Mallalew att Microsoft skulle fortsätta att utveckla LINQ till SQL baserat på feedback från användare. Men från och med .NET 4.0 är den rekommenderade lösningen LINQ to Entities. Dessutom, baserat på input från användare, kommer de mest använda funktionerna i LINQ till SQL att läggas till LINQ till Entities [7] . Som ett resultat kommer det att ske en gradvis sammanslagning av lösningar.
Experter stödde generellt detta beslut. Så, till exempel, Marco Russo, även om han reserverade sig för att flytta till LINQ till Entities inte bör ske tidigare än att det blir en fullfjädrad ersättning för LINQ till SQL, menade ändå att det är en bra idé att kombinera två delvis överlappande ramverk, men samtidigt ska de användare som är vana vid att använda "kasserade" delar av lösningar inte lida [6] .
Det är inget annat än funktionell programmering förklädd som SQL [8] -syntax .
LINQ-biblioteket innehåller verktyget SQLMetal, som låter dig automatiskt generera klasser direkt från databaserna som stöds av .NET Framework, vilket gör det mycket snabbt och enkelt att integrera databasentiteter i din kod. Ett alternativ är den relationsobjektdesigner som ingår i Visual Studio, men den kan endast användas med Microsoft SQL Server.
.NETTO | |
---|---|
Genomföranden | |
Arkitektur | |
Infrastruktur | |
Microsofts språk | |
Andra språk | |
Windows Foundations | |
Komponenter | |
Jämförelser |
|
Framtida teknologier | |
Informationsresurser |