Language Integrated Query (LINQ) er et Microsoft -projekt til at tilføje SQL -lignende forespørgselssprogsyntaks til .NET Framework- programmeringssprogene . Tidligere implementeret i C# og Visual Basic .NET . Mange af de koncepter, som LINQ introducerer, blev oprindeligt testet i Microsoft Cω- forskningsprojektet .
LINQ blev udgivet med Visual Studio 2008 i slutningen af november 2007. For hurtigt at oprette og fejlsøge LINQ-forespørgsler er der et specialiseret værktøj kaldet LINQPad .
Ved at bruge nogle nye sprogfunktioner, giver LINQ dig mulighed for at bruge SQL-lignende syntaks direkte i koden for et program skrevet, for eksempel i C#:
LINQ understøtter naturligt en forespørgselsmotor til samlinger af objekter i hukommelsen, relationelle databaser og XML -data og har en udvidelsesbar arkitektur, der giver tredjepartsudviklere adgang til deres datalagre gennem LINQ-motoren. For at gøre dette skal du implementere standardforespørgselsoperatorer ved hjælp af udvidelsesmetoder eller implementere IQueryable -grænsefladen , som giver dig mulighed for at parse udtrykstræet under kørsel og oversætte det til dit forespørgselssprog. Der er et eksempel på en tilpasset implementering af standardforespørgselsoperatører i fællesskabet. [en]
For eksempel bruger LINQ for SQL (tidligere DLinq), som oversætter LINQ-udtryk til SQL-forespørgsler mod en database, compilerens evne til at bygge et udtrykstræ baseret på programkontekst frem for at oprette funktionsdelegerede. Givet et udtrykstræ, der beskriver en forespørgsel, kan en specialiseret databaseudbyder parse den og oversætte den til en forespørgsel på det passende sprog for databasen, såsom Microsoft SQL Server, Jet (som bruges i Microsoft Access) eller enhver anden. Nogle entusiaster har allerede oprettet LINQ proof-of-concept-biblioteker til at forespørge WMI [2] , RSS , LDAP [3] , ADO.NET -datasamlinger , Amazon Web Services [4] og SharePoint [5] ved hjælp af denne taktik .
Den aktuelle forhåndsvisning fra Microsoft inkluderer også en implementering af LINQ til XML (tidligere kaldet Xlinq), som gør det meget nemmere at bygge og udtrække data fra et XML-dokument ved hjælp af lignende tilgange. Derudover arbejder Microsoft på ADO.NET vNext, også kendt som LINQ to Entities.
I slutningen af 2008 blev ansvaret for udviklingen af LINQ til SQL sammen med ADO.NET Entity Framework (inklusive LINQ til Entities) flyttet til ADO.NET-udviklingsteamet (det såkaldte ADO.NET-team). mens LINQ til SQL tidligere blev udviklet af et team tilknyttet udviklingen af en compiler til C# -sproget [6] . Det blev således indlysende, at begge løsninger er rettet mod at løse de samme problemer, og derfor vil konkurrere med hinanden. Lidt senere præciserede Tim Mallalew, at Microsoft ville fortsætte med at udvikle LINQ til SQL baseret på brugerfeedback. Men startende med .NET 4.0 er den anbefalede løsning LINQ to Entities. Baseret på input fra brugere vil de mest almindeligt anvendte funktioner i LINQ til SQL blive tilføjet til LINQ til Entities [7] . Som følge heraf vil der ske en gradvis sammensmeltning af løsninger.
Eksperter støttede generelt denne beslutning. Så for eksempel Marco Russo, selv om han tog forbehold for, at flytning til LINQ til Entities ikke burde være tidligere, end det bliver til en fuldgyldig erstatning for LINQ til SQL, erklærede ikke desto mindre, at det er en god idé at kombinere to delvist overlappende rammer, men samtidig bør de brugere, der er vant til at bruge "kasserede" dele af løsninger, ikke lide [6] .
Det er intet andet end funktionel programmering forklædt som SQL [8] syntaks .
LINQ-biblioteket inkluderer SQLMetal-værktøjet, som giver dig mulighed for automatisk at generere klasser direkte fra de databaser, der understøttes af .NET Framework, hvilket gør det meget hurtigt og nemt at integrere databaseentiteter i din kode. Et alternativ er den relationelle objektdesigner, der følger med Visual Studio, men den kan kun bruges med Microsoft SQL Server.
.NET | |
---|---|
Implementeringer | |
Arkitektur | |
Infrastruktur | |
Microsoft sprog | |
Andre sprog | |
Windows Foundations | |
Komponenter | |
Sammenligninger |
|
Fremtidige teknologier | |
Informationsressourcer |