Language Integrated Query (LINQ) este un proiect Microsoft pentru a adăuga sintaxa limbajului de interogare asemănătoare SQL la limbajele de programare .NET Framework . Implementat anterior în C# și Visual Basic .NET . Multe dintre conceptele pe care LINQ le introduce au fost testate inițial în proiectul de cercetare Microsoft Cω .
LINQ a fost lansat cu Visual Studio 2008 la sfârșitul lunii noiembrie 2007. Pentru a crea și a depana rapid interogările LINQ, există un utilitar specializat numit LINQPad .
Folosind unele caracteristici de limbaj noi, LINQ vă permite să utilizați sintaxa asemănătoare SQL direct în codul unui program scris, de exemplu, în C#:
Sprijinind nativ un motor de interogări pentru colecții de obiecte în memorie, baze de date relaționale și date XML , LINQ are o arhitectură extensibilă care permite dezvoltatorilor terți să-și acceseze depozitele de date prin motorul LINQ. Pentru a face acest lucru, trebuie să implementați operatori de interogare standard folosind metode de extensie sau să implementați interfața IQueryable , care vă permite să analizați arborele de expresie în timpul execuției, traducându-l în limbajul de interogare. Există un exemplu de implementare personalizată a operatorilor de interogare standard în comunitate. [unu]
De exemplu, LINQ for SQL (fostul DLinq), care traduce expresiile LINQ în interogări SQL în raport cu o bază de date, folosește capacitatea compilatorului de a construi un arbore de expresii bazat pe contextul programului, mai degrabă decât să creeze delegați de funcție. Având în vedere un arbore de expresii care descrie o interogare, un furnizor specializat de baze de date o poate analiza și traduce într-o interogare în limba corespunzătoare pentru baza de date, cum ar fi Microsoft SQL Server, Jet (care este folosit în Microsoft Access) sau orice altul. Unii entuziaști au creat deja biblioteci LINQ proof-of-concept pentru interogarea WMI [2] , RSS , LDAP [3] , colecții de date ADO.NET , Amazon Web Services [4] și SharePoint [5] folosind această tactică .
Previzualizarea existentă de la Microsoft include, de asemenea, o implementare a LINQ for XML (denumită anterior XLinq), care face mult mai ușoară construirea și extragerea datelor dintr-un document XML folosind abordări similare. În plus, Microsoft lucrează la ADO.NET vNext, cunoscut și sub numele de LINQ to Entities.
La sfârșitul anului 2008, responsabilitatea pentru dezvoltarea LINQ to SQL, împreună cu ADO.NET Entity Framework (inclusiv LINQ to Entities), a fost transferată echipei de dezvoltare ADO.NET (așa-numita echipă ADO.NET), în timp ce anterior LINQ to SQL a fost dezvoltat de o echipă asociată cu dezvoltarea unui compilator pentru limbajul C# [6] . Astfel, a devenit evident că ambele soluții au ca scop rezolvarea acelorași probleme și, prin urmare, vor concura între ele. Puțin mai târziu, Tim Mallalew a clarificat că Microsoft va continua să dezvolte LINQ to SQL pe baza feedback-ului utilizatorilor. Cu toate acestea, începând cu .NET 4.0, soluția recomandată este LINQ to Entities. În plus, pe baza intrărilor de la utilizatori, cele mai frecvent utilizate caracteristici ale LINQ to SQL vor fi adăugate la LINQ to Entities [7] . Ca urmare, va exista o fuziune treptată a soluțiilor.
Experții au susținut în general această decizie. Deci, de exemplu, Marco Russo, deși a făcut o rezervă că trecerea la LINQ to Entities nu ar trebui să fie mai devreme decât se transformă într-un înlocuitor cu drepturi depline pentru LINQ to SQL, a afirmat totuși că combinarea a două cadre parțial suprapuse este o idee bună, dar în același timp acei utilizatori care sunt obișnuiți să folosească părți de soluții „aruncate” nu ar trebui să sufere [6] .
Nu este altceva decât programare funcțională deghizată în sintaxă SQL [8] .
Biblioteca LINQ include instrumentul SQLMetal, care vă permite să generați automat clase direct din bazele de date suportate de .NET Framework, ceea ce face foarte rapidă și ușoară integrarea entităților bazei de date în codul dumneavoastră. O alternativă este proiectantul de obiecte relațional inclus în Visual Studio, dar poate fi utilizat numai cu Microsoft SQL Server.
.NET | |
---|---|
Implementări | |
Arhitectură | |
Infrastructură | |
Limbi Microsoft | |
Alte limbi | |
Fundamente Windows | |
Componente | |
Comparații |
|
Tehnologii viitoare | |
Resurse informaționale |