Language Integrated Query (LINQ) je projekt společnosti Microsoft , který přidává syntaxi dotazovacího jazyka podobnou SQL do programovacích jazyků .NET Framework . Dříve implementováno v C# a Visual Basic .NET . Mnoho konceptů, které LINQ zavádí, bylo původně testováno ve výzkumném projektu Microsoft Cω .
LINQ byl vydán s Visual Studio 2008 na konci listopadu 2007. Pro rychlé vytváření a ladění dotazů LINQ existuje specializovaný nástroj s názvem LINQPad .
Pomocí některých nových jazykových funkcí vám LINQ umožňuje používat syntaxi podobnou SQL přímo v kódu programu napsaného například v C#:
LINQ nativně podporuje dotazovací stroj pro kolekce objektů v paměti, relačních databází a dat XML a má rozšiřitelnou architekturu, která umožňuje vývojářům třetích stran přistupovat ke svým datovým úložištím prostřednictvím enginu LINQ. Chcete-li to provést, musíte implementovat standardní operátory dotazů pomocí metod rozšíření nebo implementovat rozhraní IQueryable , které vám umožní analyzovat strom výrazů za běhu a přeložit jej do vašeho dotazovacího jazyka. Existuje příklad vlastní implementace standardních operátorů dotazů v komunitě. [jeden]
Například LINQ for SQL (dříve DLinq), který překládá výrazy LINQ do dotazů SQL proti databázi, využívá schopnost kompilátoru vytvořit strom výrazů založený na kontextu programu místo vytváření delegátů funkcí. Daný strom výrazů, který popisuje dotaz, jej může specializovaný poskytovatel databáze analyzovat a přeložit do dotazu v jazyce příslušném pro databázi, jako je Microsoft SQL Server, Jet (který se používá v aplikaci Microsoft Access) nebo jakýkoli jiný. Někteří nadšenci již pomocí této taktiky vytvořili LINQ proof-of-concept knihovny pro dotazování WMI [2] , RSS , LDAP [3] , sběr dat ADO.NET , Amazon Web Services [4] a SharePoint [5] .
Aktuální náhled od Microsoftu také obsahuje implementaci LINQ pro XML (dříve nazývanou XLinq), která výrazně usnadňuje vytváření a extrahování dat z dokumentu XML pomocí podobných přístupů. Microsoft navíc pracuje na ADO.NET vNext, známém také jako LINQ to Entities.
Na konci roku 2008 byla odpovědnost za vývoj LINQ to SQL spolu s ADO.NET Entity Framework (včetně LINQ to Entities) převedena na vývojový tým ADO.NET (tzv. ADO.NET tým), zatímco dříve LINQ to SQL vyvíjel tým spojený s vývojem kompilátoru pro jazyk C# [6] . Ukázalo se tedy, že obě řešení jsou zaměřena na řešení stejných problémů, a proto si budou navzájem konkurovat. O něco později Tim Mallalew upřesnil, že Microsoft bude pokračovat ve vývoji LINQ to SQL na základě zpětné vazby od uživatelů. Počínaje .NET 4.0 je však doporučeným řešením LINQ to Entities. Navíc, na základě podnětů od uživatelů, budou do LINQ to Entities přidány nejčastěji používané funkce LINQ to SQL [7] . V důsledku toho bude docházet k postupnému slučování řešení.
Odborníci toto rozhodnutí vesměs podporovali. Takže například Marco Russo, ačkoli vznesl výhradu, že přechod na LINQ to Entities by neměl být dříve, než se změní v plnohodnotnou náhradu za LINQ to SQL, přesto prohlásil, že kombinace dvou částečně se překrývajících frameworků je dobrý nápad, ale zároveň by tím neměli trpět ti uživatelé, kteří jsou zvyklí používat „vyřazené“ části řešení [6] .
Není to nic jiného než funkční programování převlečené za syntaxi SQL [8] .
Knihovna LINQ obsahuje nástroj SQLMetal, který umožňuje automaticky generovat třídy přímo z databází podporovaných rozhraním .NET Framework, díky čemuž je integrace databázových entit do kódu velmi rychlá a snadná. Alternativou je návrhář relačních objektů, který je součástí sady Visual Studio, ale lze jej použít pouze s Microsoft SQL Server.
.SÍŤ | |
---|---|
Implementace | |
Architektura | |
Infrastruktura | |
jazyky Microsoft | |
Jiné jazyky | |
Základy Windows | |
Komponenty | |
Srovnání |
|
Budoucí technologie | |
Informační zdroje |