SlideShare une entreprise Scribd logo
Language INtegrated Query
LINQ
1
Plan:
Definition2
Introduction1
Linq To ADO.net4
Conclusion6
Linq To Object3
Linq To XML5
2
Introduction:
 la multiplication des sources de données :
 Les collections objets
 Les bases de données relationnelles
 Les frameworks Object Relational Mapping (Entity Framework chez
Microsoft)
 Les fichiers XML et ses déclinaisons (eXtensible Markup Language)
 Les autres fichiers structurés (CSV, tableurs, ...)
 ...
3
Problématique ?
 connaitre environ 3 à 4 ‘langages ’ de requête:
 SQL (Structured Query Language) : Requête des bases de données relationnelles
 XML : Pour construire des fichiers de données
 XPath : Requête des fichiers XML
 Les requêtes sont considérées comme de simples chaînes de caractères
pouvant contenir des erreurs et entrainer de grandes difficultés à les
corriger
4
LINQ
5
Définition de LINQ:
 LINQ (Language Integrated Query) est un ensemble de
fonctionnalités introduites dans Visual Studio 2008 qui étend les
fonctions de requête puissantes à la syntaxe des langages C# et
Visual Basic.
 LINQ propose des modèles standard et simples d'apprentissage pour
l'interrogation et la mise à jour des données, et la technologie peut
être étendue pour prendre en charge presque tout type de magasin
de données.
6
Définition de LINQ:
 Visual Studio inclut les assemblys de fournisseur LINQ qui
permettent l'utilisation de LINQ avec des collections dans le .NET
Framework, des bases de données SQL Server, des jeux de données
ADO.NET et des documents XML.
7
L‘Architecture de LINQ:
8
9
LINQ To Object
 Il s'agit d'extensions permettant de faire des requêtes sur les
objets en mémoire et notamment sur toutes les listes ou
collections.
 Toutes les opérations de requête LINQ comportent trois actions
distinctes :
 Obtenir la source de données.
 Créer la requête.
 Exécuter la requête.
10
Exemple:
List<int> liste = new List<int> { 4, 6, 1, 9, 5, 15, 8, 3 };
foreach (int i in liste)
if (i > 5)
{ Console.WriteLine(i);
} }
List<int> liste = new List<int> { 4, 6, 1, 9, 5, 15, 8, 3 };
IEnumerable<int> requeteFiltree = from i in liste
where i > 5
select i;
foreach (int i in requeteFiltree)
{ Console.WriteLine(i); }
11
Quelque  opérateurs de requête:
 Jointure on utilise le mot-clé join pour faire la jointure entre
deux listes puis on utilise le mot-clé on et le mot-clé equals pour
indiquer sur quoi on fait la jointure.
var liste = from commande in listeCommandes
join client in listeClients on commande.IdentifiantClient equals
client.Identifiant
select new { client.Nom, commande.Prix };
foreach (var element in liste)
{
Console.WriteLine("Le client {0} a payé {1}", element.Nom, element.Prix);
} 12
Quelque  opérateurs de requête:
 Groupe By Il est intéressant de pouvoir regrouper les objets qui ont la
même valeur. Par exemple pour obtenir toutes les commandes,
groupées par client.
var liste = from commande in listeCommandes
group commande by commande.IdentifiantClient;
foreach (var element in liste)
{
Console.WriteLine("Le client : {0} a réalisé {1} commande(s)",
element.Key, element.Count());
foreach (Commande commande in element)
{
Console.WriteLine("tPrix : {0}", commande.Prix); }} 13
Quelque  opérateurs de requête:
 Var :Il est assez fréquent de construire des objets anonymes à
l’intérieur d’une requête. Par exemple, plutôt que de renvoyer
uniquement le nom du client, je pourrais également renvoyer
l’Age, mais comme je n’ai pas besoin de l’identifiant, je peux
créer un objet anonyme juste avec ces deux propriétés .
14
var requete = from client in listeClients
where client.Age > 18
orderby client.Age , client.Nom
select new { client.Nom, client.Age };
foreach (var obj in requete)
{
Console.WriteLine("{0} a {1} ans", obj.Nom, obj.Age); }
Quelque  opérateurs de requête:
 Where() Nous utilisons la méthode d’extensions Where() servant
de prédicat pour filtrer la liste.
IEnumerable<Commande> commandesFiltrees = listeCommandes.
Where(commande => commande.Prix > 100).
Where(commande => commande.NombreArticles >10).
OrderBy(commande => commande.Prix);
15
Quelque  opérateurs de requête:
 Sum() qui permet de faire la somme des éléments d’une liste ou
la méthode Average() qui permet de faire la moyenne :
List<int> liste = new List<int> { 4, 6, 1, 9, 5, 15, 8, 3 };
Console.WriteLine("Somme : {0}", liste.Sum());
Console.WriteLine("Moyenne : {0}", liste.Average());
16
Quelque  opérateurs de requête:
 Take() nous permet de récupérer les X premiers éléments d’une liste :
 First() pour obtenir le premier élément d’une liste :
IEnumerable<Client> extrait = listeClients.OrderByDescending(client =>
client.Age).Take(5);
list<int> liste = new List<int> { 4, 6, 1, 9, 5, 15, 8, 3 };
int premier = liste.Where(i => i > 5).First();
17
Tp de LINQ To Object
18
Linq To SQL
Linq To DataSet
Linq To Entity
19
Linq To SQL:
 Linq to SQL est une implémentation de ORM inclus dans le Framework .Net
depuis sa version 3.5.
 Un ORM permet de faire la correspondance entre le monde de la
programmation orienté objet et celui des bases de données relationnelles.
 La manipulation d’une base de données se fait donc via des objets au sens
POO du terme.
20
Avantages :
1. La simplicité des requêtes :
La syntaxe de Linq est, bien qu’elle soit simple à appréhender, très puissante. Elle
permet d’effectuer dans certains cas des requêtes plus simplement qu’avec le
langage SQL en un nombre réduit de lignes, tout en restant compréhensibles pour
n’importe quel développeur novice
2. les noms d'objets sont totalement qualifiés sans que le développeur ait à
s’en préoccupé:
Lorsque les classes d’entités sont générées à partir d’un schéma relationnel, Linq
to SQL fait automatiquement la correspondance des types du langage SQL et T-SQL
pour chaque attribut des tables avec leurs pendants dans les langages .Net
3. La détection rapide des erreurs syntaxiques et sémantiques,
contrairement aux requêtes SQL.
4. Linq to SQL ne se limite pas aux requêtes Linq:
il offre aussi la possibilité d’exécuter directement une requête SQL ou bien
d’appeler une procédure stockée 21
Inconvénients :
1. Un administrateur de base de données ne voudra pas forcément se plonger
dans le code pour y effectuer des modifications…
2. La durée d’exécution de certain requêtes Linq to SQL est légèrement
supérieur à la même requête en SQL.
22
Linq To DataSet :
 Il est impossible d’effectuer des requêtes LINQ to SQL sur une base de
données inconnue jusqu’à l’exécution
 LINQ to DataSet permettent d’exécuter des requêtes LINQ sur des DataSet
 Un DataSet peut être récupéré par une requête SQL ADO.NET
 LINQ to DataSet permet d’effectuer des requêtes sur toute base de données
accessible via ADO.NET
 Ce qui offre un dynamisme bien plus grand que si vous utilisiez LINQ to SQL
23
Linq To Entity:
« une application orientée objet ne devrait pas dépendre des mécanismes de
persistance ».
 LINQ to SQ s’agit d’une approche centrée sur les données (ORM)
 LINQ to Entities les données sources ne sont plus des tables ou des objets
mappés sur ces dernières, les sources sont purement conceptuelles
 LINQ to Entities utilise un modèle conceptuel de base de données (EDM)
 Grâce à LINQ to Entities, les applications vont pouvoir fonctionner avec des
données sous forme d’entité ou d’objets dans l’environnement .NET.
24
Tp LINQ TO ADO.NET
25
26
Rappel
Le format XML est apparu vers 1998, bien qu’il ai eu des
prédécesseurs. Ce format existe pour pouvoir faire transiter
des informations entre différents types de systèmes entre
autre.
Il est donc déjà bien connu dans le milieu informatique et
nous avons de nombreux outils pour le manipuler.
Un exemple de structure de fichier XML est celui-ci :
Problématique :
De nos jours, l'XML est très utilisé dans les différentes
applications. Il est utilisé pour permettre l'échange des
données entre des applications, pour sauvegarder une
configuration, pour sauvegarder des données (temporaires
ou non), pour générer des rapports, ...etc. Donc on peut le
trouver à peu près par tout.
30
Xml est cependant une technologie difficile à interfacer avec
les langages orientés objet, en particulier lorsque ceux-ci
désirent créer du contenu Xml.
L’approche classique utilise DOM qui oblige à créer
l’ensemble des éléments avant de les rassembler.
DOM se révèle trop complexe lorsqu’il s’agit de manipuler
quelques lignes de XML.
Après plusieurs années d’utilisation de l’API W3C DOM XML, il
est apparu clairement qu’une amélioration s’imposait.
Linq To XML
Définitions :
 LINQ to XML est le nom de l’API dédiée au travail sur les
données XML (cette interface était précédemment appelée
XLINQ).
LINQ to XML propose un modèle particulier pour accéder
aux données XML, les sources pouvant être un flux (stream),
un fichier ou du XML en mémoire. En réalité il y très peu de
choses à savoir pour utiliser le modèle LINQ to XML, il suffit
de connaître les types les plus courants de ce dernier qui
sont : XDocument, XElement et XAttribute.
 L’un des gros avantages de LINQ to XML est de permettre
l’interrogation et la création de documents XML en se
passant totalement d’API plus ou moins complexes, et même
de XPath, XQuery!
 LINQ to XML n’a pas vocation à remplacer ces technologies,
il se place juste au-dessus pour donner au développeur un
niveau d’abstraction supérieur et simplifier la manipulation
des sources XML.
Le modèle d’objet LINQ to XML :
 LINQ n’est pas juste une nouvelle librairie que vous ajoutez à vos
projets. Il s’agit d’une tout autre approche pour interroger vos
données, consistant en plusieurs composants qui dépendent de la
source de données à interroger.
 On peut utiliser LINQ pour interroger des collections de données
en mémoire avec LINQ to Objects, des fichiers XML avec LINQ to
XML, des DataSets avec LINQ to DataSets et des bases de données
SQL Server avec LINQ to SQL.
Conclusion:
Références:
 http://msdn.microsoft.com/fr-fr/library/system.linq.aspx
 http://www.developpez.net/forums/f484/dotnet/langages/csharp/
 http://code.google.com/p/dblinq2007
 www.e-naxos.com
 http://webcourse.cs.technion.ac.il/234319/Spring2009/ho/WCFiles/09%20LI
NQ.pdf
36
37

Contenu connexe

Similaire à Language INtegrated Query LINQ

ADO_NET_complet.pdf
ADO_NET_complet.pdfADO_NET_complet.pdf
ADO_NET_complet.pdf
mostafaoujeddi1
 
Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity framework
DNG Consulting
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
Microsoft
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
Renaud Dumont
 
La technologie net par karim kalti
La technologie net par karim kalti La technologie net par karim kalti
La technologie net par karim kalti
Imen Naés
 
Présentation Talend Open Studio
Présentation Talend Open StudioPrésentation Talend Open Studio
Présentation Talend Open Studio
horacio lassey
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
Abdoulaye Dieng
 
Elastic serach
Elastic serachElastic serach
Elastic serach
TAOUFIQ ELFILALI
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
DNG Consulting
 
PHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiquesPHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiques
oumaimanouari
 
Consolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic BeatsConsolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic Beats
gcatt
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
Microsoft
 
Premiers pas dans l'univers .NET
Premiers pas dans l'univers .NETPremiers pas dans l'univers .NET
Premiers pas dans l'univers .NET
Bantu Hub
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3DublinCore2b
 
Ado.net database access
Ado.net database accessAdo.net database access
Ado.net database access
MarweN Boughattas
 
comment realiser un Service Web
comment realiser un Service Web comment realiser un Service Web
comment realiser un Service Web Nazih Heni
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
Sabri Bouchlema
 
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoTBenchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
CHAKER ALLAOUI
 

Similaire à Language INtegrated Query LINQ (20)

ADO_NET_complet.pdf
ADO_NET_complet.pdfADO_NET_complet.pdf
ADO_NET_complet.pdf
 
Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity framework
 
Base donnes my_sql
Base donnes my_sqlBase donnes my_sql
Base donnes my_sql
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
La technologie net par karim kalti
La technologie net par karim kalti La technologie net par karim kalti
La technologie net par karim kalti
 
Présentation Talend Open Studio
Présentation Talend Open StudioPrésentation Talend Open Studio
Présentation Talend Open Studio
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Elastic serach
Elastic serachElastic serach
Elastic serach
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
PHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiquesPHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiques
 
Consolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic BeatsConsolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic Beats
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Premiers pas dans l'univers .NET
Premiers pas dans l'univers .NETPremiers pas dans l'univers .NET
Premiers pas dans l'univers .NET
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3
 
Ado.net database access
Ado.net database accessAdo.net database access
Ado.net database access
 
comment realiser un Service Web
comment realiser un Service Web comment realiser un Service Web
comment realiser un Service Web
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoTBenchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
 
Tour Horizont.Net
Tour Horizont.NetTour Horizont.Net
Tour Horizont.Net
 

Plus de Said Sadik

Etat de l’art approche et outils BI
Etat de l’art approche et outils BIEtat de l’art approche et outils BI
Etat de l’art approche et outils BI
Said Sadik
 
Mastering spring 5.0 - By SADIK SAID
Mastering spring 5.0 - By SADIK SAIDMastering spring 5.0 - By SADIK SAID
Mastering spring 5.0 - By SADIK SAID
Said Sadik
 
Gestion de Stock Sous Open ERP
Gestion de Stock  Sous Open ERP Gestion de Stock  Sous Open ERP
Gestion de Stock Sous Open ERP
Said Sadik
 
Vulnérabilité des sites web
Vulnérabilité des sites webVulnérabilité des sites web
Vulnérabilité des sites web
Said Sadik
 
INTRODUCTION A BPM
INTRODUCTION A BPMINTRODUCTION A BPM
INTRODUCTION A BPM
Said Sadik
 
Gestion de Projets
Gestion de Projets Gestion de Projets
Gestion de Projets
Said Sadik
 
Processus d’achat et de vente
Processus d’achat et de venteProcessus d’achat et de vente
Processus d’achat et de vente
Said Sadik
 
ECM: Entreprise Content Management
ECM: Entreprise Content ManagementECM: Entreprise Content Management
ECM: Entreprise Content Management
Said Sadik
 

Plus de Said Sadik (8)

Etat de l’art approche et outils BI
Etat de l’art approche et outils BIEtat de l’art approche et outils BI
Etat de l’art approche et outils BI
 
Mastering spring 5.0 - By SADIK SAID
Mastering spring 5.0 - By SADIK SAIDMastering spring 5.0 - By SADIK SAID
Mastering spring 5.0 - By SADIK SAID
 
Gestion de Stock Sous Open ERP
Gestion de Stock  Sous Open ERP Gestion de Stock  Sous Open ERP
Gestion de Stock Sous Open ERP
 
Vulnérabilité des sites web
Vulnérabilité des sites webVulnérabilité des sites web
Vulnérabilité des sites web
 
INTRODUCTION A BPM
INTRODUCTION A BPMINTRODUCTION A BPM
INTRODUCTION A BPM
 
Gestion de Projets
Gestion de Projets Gestion de Projets
Gestion de Projets
 
Processus d’achat et de vente
Processus d’achat et de venteProcessus d’achat et de vente
Processus d’achat et de vente
 
ECM: Entreprise Content Management
ECM: Entreprise Content ManagementECM: Entreprise Content Management
ECM: Entreprise Content Management
 

Language INtegrated Query LINQ

  • 3. Introduction:  la multiplication des sources de données :  Les collections objets  Les bases de données relationnelles  Les frameworks Object Relational Mapping (Entity Framework chez Microsoft)  Les fichiers XML et ses déclinaisons (eXtensible Markup Language)  Les autres fichiers structurés (CSV, tableurs, ...)  ... 3
  • 4. Problématique ?  connaitre environ 3 à 4 ‘langages ’ de requête:  SQL (Structured Query Language) : Requête des bases de données relationnelles  XML : Pour construire des fichiers de données  XPath : Requête des fichiers XML  Les requêtes sont considérées comme de simples chaînes de caractères pouvant contenir des erreurs et entrainer de grandes difficultés à les corriger 4
  • 6. Définition de LINQ:  LINQ (Language Integrated Query) est un ensemble de fonctionnalités introduites dans Visual Studio 2008 qui étend les fonctions de requête puissantes à la syntaxe des langages C# et Visual Basic.  LINQ propose des modèles standard et simples d'apprentissage pour l'interrogation et la mise à jour des données, et la technologie peut être étendue pour prendre en charge presque tout type de magasin de données. 6
  • 7. Définition de LINQ:  Visual Studio inclut les assemblys de fournisseur LINQ qui permettent l'utilisation de LINQ avec des collections dans le .NET Framework, des bases de données SQL Server, des jeux de données ADO.NET et des documents XML. 7
  • 9. 9
  • 10. LINQ To Object  Il s'agit d'extensions permettant de faire des requêtes sur les objets en mémoire et notamment sur toutes les listes ou collections.  Toutes les opérations de requête LINQ comportent trois actions distinctes :  Obtenir la source de données.  Créer la requête.  Exécuter la requête. 10
  • 11. Exemple: List<int> liste = new List<int> { 4, 6, 1, 9, 5, 15, 8, 3 }; foreach (int i in liste) if (i > 5) { Console.WriteLine(i); } } List<int> liste = new List<int> { 4, 6, 1, 9, 5, 15, 8, 3 }; IEnumerable<int> requeteFiltree = from i in liste where i > 5 select i; foreach (int i in requeteFiltree) { Console.WriteLine(i); } 11
  • 12. Quelque  opérateurs de requête:  Jointure on utilise le mot-clé join pour faire la jointure entre deux listes puis on utilise le mot-clé on et le mot-clé equals pour indiquer sur quoi on fait la jointure. var liste = from commande in listeCommandes join client in listeClients on commande.IdentifiantClient equals client.Identifiant select new { client.Nom, commande.Prix }; foreach (var element in liste) { Console.WriteLine("Le client {0} a payé {1}", element.Nom, element.Prix); } 12
  • 13. Quelque  opérateurs de requête:  Groupe By Il est intéressant de pouvoir regrouper les objets qui ont la même valeur. Par exemple pour obtenir toutes les commandes, groupées par client. var liste = from commande in listeCommandes group commande by commande.IdentifiantClient; foreach (var element in liste) { Console.WriteLine("Le client : {0} a réalisé {1} commande(s)", element.Key, element.Count()); foreach (Commande commande in element) { Console.WriteLine("tPrix : {0}", commande.Prix); }} 13
  • 14. Quelque  opérateurs de requête:  Var :Il est assez fréquent de construire des objets anonymes à l’intérieur d’une requête. Par exemple, plutôt que de renvoyer uniquement le nom du client, je pourrais également renvoyer l’Age, mais comme je n’ai pas besoin de l’identifiant, je peux créer un objet anonyme juste avec ces deux propriétés . 14 var requete = from client in listeClients where client.Age > 18 orderby client.Age , client.Nom select new { client.Nom, client.Age }; foreach (var obj in requete) { Console.WriteLine("{0} a {1} ans", obj.Nom, obj.Age); }
  • 15. Quelque  opérateurs de requête:  Where() Nous utilisons la méthode d’extensions Where() servant de prédicat pour filtrer la liste. IEnumerable<Commande> commandesFiltrees = listeCommandes. Where(commande => commande.Prix > 100). Where(commande => commande.NombreArticles >10). OrderBy(commande => commande.Prix); 15
  • 16. Quelque  opérateurs de requête:  Sum() qui permet de faire la somme des éléments d’une liste ou la méthode Average() qui permet de faire la moyenne : List<int> liste = new List<int> { 4, 6, 1, 9, 5, 15, 8, 3 }; Console.WriteLine("Somme : {0}", liste.Sum()); Console.WriteLine("Moyenne : {0}", liste.Average()); 16
  • 17. Quelque  opérateurs de requête:  Take() nous permet de récupérer les X premiers éléments d’une liste :  First() pour obtenir le premier élément d’une liste : IEnumerable<Client> extrait = listeClients.OrderByDescending(client => client.Age).Take(5); list<int> liste = new List<int> { 4, 6, 1, 9, 5, 15, 8, 3 }; int premier = liste.Where(i => i > 5).First(); 17
  • 18. Tp de LINQ To Object 18
  • 19. Linq To SQL Linq To DataSet Linq To Entity 19
  • 20. Linq To SQL:  Linq to SQL est une implémentation de ORM inclus dans le Framework .Net depuis sa version 3.5.  Un ORM permet de faire la correspondance entre le monde de la programmation orienté objet et celui des bases de données relationnelles.  La manipulation d’une base de données se fait donc via des objets au sens POO du terme. 20
  • 21. Avantages : 1. La simplicité des requêtes : La syntaxe de Linq est, bien qu’elle soit simple à appréhender, très puissante. Elle permet d’effectuer dans certains cas des requêtes plus simplement qu’avec le langage SQL en un nombre réduit de lignes, tout en restant compréhensibles pour n’importe quel développeur novice 2. les noms d'objets sont totalement qualifiés sans que le développeur ait à s’en préoccupé: Lorsque les classes d’entités sont générées à partir d’un schéma relationnel, Linq to SQL fait automatiquement la correspondance des types du langage SQL et T-SQL pour chaque attribut des tables avec leurs pendants dans les langages .Net 3. La détection rapide des erreurs syntaxiques et sémantiques, contrairement aux requêtes SQL. 4. Linq to SQL ne se limite pas aux requêtes Linq: il offre aussi la possibilité d’exécuter directement une requête SQL ou bien d’appeler une procédure stockée 21
  • 22. Inconvénients : 1. Un administrateur de base de données ne voudra pas forcément se plonger dans le code pour y effectuer des modifications… 2. La durée d’exécution de certain requêtes Linq to SQL est légèrement supérieur à la même requête en SQL. 22
  • 23. Linq To DataSet :  Il est impossible d’effectuer des requêtes LINQ to SQL sur une base de données inconnue jusqu’à l’exécution  LINQ to DataSet permettent d’exécuter des requêtes LINQ sur des DataSet  Un DataSet peut être récupéré par une requête SQL ADO.NET  LINQ to DataSet permet d’effectuer des requêtes sur toute base de données accessible via ADO.NET  Ce qui offre un dynamisme bien plus grand que si vous utilisiez LINQ to SQL 23
  • 24. Linq To Entity: « une application orientée objet ne devrait pas dépendre des mécanismes de persistance ».  LINQ to SQ s’agit d’une approche centrée sur les données (ORM)  LINQ to Entities les données sources ne sont plus des tables ou des objets mappés sur ces dernières, les sources sont purement conceptuelles  LINQ to Entities utilise un modèle conceptuel de base de données (EDM)  Grâce à LINQ to Entities, les applications vont pouvoir fonctionner avec des données sous forme d’entité ou d’objets dans l’environnement .NET. 24
  • 25. Tp LINQ TO ADO.NET 25
  • 26. 26
  • 27. Rappel Le format XML est apparu vers 1998, bien qu’il ai eu des prédécesseurs. Ce format existe pour pouvoir faire transiter des informations entre différents types de systèmes entre autre. Il est donc déjà bien connu dans le milieu informatique et nous avons de nombreux outils pour le manipuler.
  • 28. Un exemple de structure de fichier XML est celui-ci :
  • 29. Problématique : De nos jours, l'XML est très utilisé dans les différentes applications. Il est utilisé pour permettre l'échange des données entre des applications, pour sauvegarder une configuration, pour sauvegarder des données (temporaires ou non), pour générer des rapports, ...etc. Donc on peut le trouver à peu près par tout.
  • 30. 30 Xml est cependant une technologie difficile à interfacer avec les langages orientés objet, en particulier lorsque ceux-ci désirent créer du contenu Xml. L’approche classique utilise DOM qui oblige à créer l’ensemble des éléments avant de les rassembler. DOM se révèle trop complexe lorsqu’il s’agit de manipuler quelques lignes de XML.
  • 31. Après plusieurs années d’utilisation de l’API W3C DOM XML, il est apparu clairement qu’une amélioration s’imposait. Linq To XML
  • 32. Définitions :  LINQ to XML est le nom de l’API dédiée au travail sur les données XML (cette interface était précédemment appelée XLINQ). LINQ to XML propose un modèle particulier pour accéder aux données XML, les sources pouvant être un flux (stream), un fichier ou du XML en mémoire. En réalité il y très peu de choses à savoir pour utiliser le modèle LINQ to XML, il suffit de connaître les types les plus courants de ce dernier qui sont : XDocument, XElement et XAttribute.
  • 33.  L’un des gros avantages de LINQ to XML est de permettre l’interrogation et la création de documents XML en se passant totalement d’API plus ou moins complexes, et même de XPath, XQuery!  LINQ to XML n’a pas vocation à remplacer ces technologies, il se place juste au-dessus pour donner au développeur un niveau d’abstraction supérieur et simplifier la manipulation des sources XML.
  • 34. Le modèle d’objet LINQ to XML :
  • 35.  LINQ n’est pas juste une nouvelle librairie que vous ajoutez à vos projets. Il s’agit d’une tout autre approche pour interroger vos données, consistant en plusieurs composants qui dépendent de la source de données à interroger.  On peut utiliser LINQ pour interroger des collections de données en mémoire avec LINQ to Objects, des fichiers XML avec LINQ to XML, des DataSets avec LINQ to DataSets et des bases de données SQL Server avec LINQ to SQL. Conclusion:
  • 36. Références:  http://msdn.microsoft.com/fr-fr/library/system.linq.aspx  http://www.developpez.net/forums/f484/dotnet/langages/csharp/  http://code.google.com/p/dblinq2007  www.e-naxos.com  http://webcourse.cs.technion.ac.il/234319/Spring2009/ho/WCFiles/09%20LI NQ.pdf 36
  • 37. 37

Notes de l'éditeur

  1. Plan
  2. En 30 ans, les dev se sont vus confrontés à la multiplication des sources de données Avec toutes ces méthodes de stockage des données, sont apparus les &amp;quot;langages&amp;quot; de requête permettant l&amp;apos;accès à ces informationss développeurs se sont vus confrontés à la multiplication des sources de données :
  3. . Les développeurs sont contraints de connaitre environ 5 à 6 langages autour de leur langage de prédilection. On retrouve parmi les plus utilisés : LINQ permet de résoudre ces problèmes car il possède une syntaxe qui permet d’utiliser l’IntelliSense de Visual Studio et qui est compatible, sans changement de code, avec tout type de source de données
  4. -qui permet de rapprocher le monde des objets et le monde des données.
  5. -qui permet de rapprocher le monde des objets et le monde des données.
  6. domaines d&amp;apos;applications pour LINQ : Linq To Entities ou Linq To SQL qui utilisent ces extensions de langage sur les bases de données. Linq To XML qui utilise ces extensions de langage pour travailler avec les fichiers XML. Linq To Object qui permet de travailler avec des collections d&amp;apos;objets en mémoire.
  7. On appelle LINQ to ADO.NET l’ensemble des implémentations de LINQ qui, d’une façon ou d’une autre, doivent accéder à des données relationnelles accessible via les fournisseurs d’accès de ADO.NET.LINQ to ADO.NET regroupe ainsi trois saveurs différentes de « LINQ »:
  8. LINQ to Objects représente une nouvelle approche des collections. Auparavant, vous deviez écrire des boucles foreach complexes pour spécifier comment récupérer les données d&amp;apos;une collection. Avec LINQ, vous écrivez du code déclaratif qui décrit ce que vous souhaitez récupérer.
  9. On appelle LINQ to ADO.NET l’ensemble des implémentations de LINQ qui, d’une façon ou d’une autre, doivent accéder à des données relationnelles accessible via les fournisseurs d’accès de ADO.NET.LINQ to ADO.NET regroupe ainsi trois saveurs différentes de « LINQ »:
  10. ORM(Object Relational Mapping ou mapping objet relationnel en français)
  11. 1Grâce à la couche d’abstraction du code SQL induite par Linq to SQL, certaines requêtes sont très simplifiées vis-à-vis du développeur et ne nécessitent pas de connaissances approfondies du langage. Cela permet au code Linq to SQL d’être facilement maintenable 3les requêtes Linq étant compilées avec le reste du code, L’IntelliSense qui est inclus lors de la compilation sur Visual Studio apporte un certain confort au développeur. Ces fonctionnalités réduisent la nécessité du débogage de requêtes ainsi que la résolution d’erreurs.
  12. 1 Le code Linq to SQL étant géré côté application, cela oblige en cas de patch du schéma à revoir le code de l&amp;apos;application, idem en cas d&amp;apos;optimisation 2 Pour des opérations de masse les performances de Linq to SQL ne tiennent pas lacomparaison, sauf en lecture où il est plus rapide
  13. 1 pour utiliser LINQ to SQL sur une base de données, les classes de code source doivent être générées et compilées spécifiquement pour cette base de données, ou qu’un fichier de mapping doit être créé . Mais alors que doit faire le développeur ?
  14. EDM Entity Data Model. LINQ to Entities a été imaginé afin de permettre aux applications d’interagir avec des données représentées sous forme relationnelle. Ceci est dû au fait que, de manière générale, les schémas des bases de données ne sont pas toujours idéaux pour faire des manipulations de ces informations ce qui rend leur utilisation plus aisée
  15. On appelle LINQ to ADO.NET l’ensemble des implémentations de LINQ qui, d’une façon ou d’une autre, doivent accéder à des données relationnelles accessible via les fournisseurs d’accès de ADO.NET.LINQ to ADO.NET regroupe ainsi trois saveurs différentes de « LINQ »:
  16. De nos jours, l&amp;apos;XML est très utilisé dans les différentes applications. Il est utilisé pour permettre l&amp;apos;échange des données entre des applications, pour sauvegarder une configuration, pour sauvegarder des données (temporaires ou non), pour générer des rapports, ...etc. Donc on peut le trouver à peu près par tout.
  17. on navigue dans les données XML à l’aidedu DOM (Document Object Model) ou de XPath/XQuery.
  18. Linq to Xml propose une nouvelle syntaxe pour créer du contenu Xml, la construction fonctionnelle. Elle permet de créer les éléments selon une structure hiérarchique beaucoup plus compacte. Cette syntaxe est encore plus évidente dès lors que nous utilisons Visual Basic 2008, car ce dernier a introduit dans sa dernière version les littéraux Xml.
  19. XLINQ fournit la puissance des requêtes et des transformations deXQuery et de XPath, le tout intégré dans .NET.
  20. Toutes ces classes sont définies dans l&amp;apos;espace de noms System.Xml.XLinq dans l&amp;apos;assemblage System.Xml.XLinq.Dll. La classe XObject tout d’abord qui est la classe de base pour représenter n’importe quel objet Xml. Cette classe propose des méthodes qui représentent toute la gestion structurelle de l’arbre Xml qui sera créé en mémoire. XNode est une classe abstraite qui représente les nœuds d&amp;apos;une arborescence XML.XContainer est une classe de base abstraite pour tous les nœuds pouvant comporter des nœuds enfants. XDocument représente un document XML XElement représente un élément XML. XAttribute représente un attribut XML
  21. Il faut pas oublié que LINQ n’est pas simplement un langage de requête, mais également il peut être utilisé pour modifier le format des données.