Avec la nouvelle mouture de C# version 3 (ou VB.NET version 9), Microsoft annonçait il y a déjà quelques mois la venue de LINQ !
Pour rappel, LINQ est un langage orienté requêtes qui autorise notamment de procéder à des requêtes, non plus seulement sur des bases de données, mais également sur des structures XML ou encore des entités métiers. Ces différentes cibles sont appelées des « domaines de données ».
Ce principe n’a pas changé. Par contre, de nouveaux domaines de données sont apparus : LINQ to Dataset et LINQ to Entities.
Pour le second, la notion d’« Entities » réfèrent au concept de mapping O/R. Tout développeur produisant régulièrement des applications de gestion (exploitant des bases de données relationnelles) se pose la problématique de persistence (en l’occurrence, persistence des objects métiers dans une base relationnelle).
En principe, la persistence repose sur du mapping Objet/Relationnel (par exemple classe .NET mappé sur une table SQL Server).
A l’époque des annonces du Framework .NET 2.0, Microsoft prévoyait « Object Space », un module permettant de faciliter ce mapping. Or, ce projet a été annulé suite à la beta 1 et rien d’autre ne semblait se profiler. Et bien, avec LINQ to Entities, c’est chose faîte. Ce module va permettre de déplacer les traitements sur les données au niveau des objets métiers grâce à un système de mapping très poussé (d’après les dires de Microsoft !) et bien entendu du requêtage très puissant via LINQ. Donc, à suivre de près.
Pour illustration, voici à quoi ressemble une requête LINQ :
using System;
using System.Query;
using System.Collections.Generic;
class app
{
static void Main()
{
string[] names = { "Burke", "Connor", "Frank", "Everett", "Albert", "George", "Harris", "David" };
IEnumerable<string> expr =
from s in names
where s.Length == 5
orderby s
select s.ToUpper();
foreach (string item in expr)
Console.WriteLine(item);
}
}
Finalement, les « domaines de données » actuels de LINQ sont les suivants :
LINQ to DataSet
LINQ to Entities
LINQ to SQL (appelé DLinq)
LINQ to XML (appelé XLinq)
LINQ to Objects