190 likes | 298 Views
C#3 et le projet Linq. Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.com – http://blogs.microsoft.fr/mitsufu. Pierre LAGARDE Relations techniques développeurs - Microsoft France pierlag@microsoft.com. Agenda. Introduction
E N D
C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.com – http://blogs.microsoft.fr/mitsufu Pierre LAGARDE Relations techniques développeurs - Microsoft France pierlag@microsoft.com
Agenda • Introduction • Rappels sur le framework .Net 2.0 • Linq • C#3 • Pause • XLinq • DLinq
Introduction: .Net Language Integrated Query • Constat: la maturité des langages objets est atteinte dans l’industrie. Le prochain challenge sera de diminuer la complexité d’accès aux données non objet (principalement les bases de données relationnelles et le Xml). • Les technologies actuelles sont multiples: sql, mapping objet-relationnel, DOM, XPath, XQuery, etc… • Linq offre une approche d’accès aux données plus générale en ciblant n’importe quel type de source de données • Linq exploite les dernières évolutions de C#3 pour mettre en place un tel mécanisme. Linq définit ainsi un standard qui pourra être étendu aux autres langages .Net tels que VB.NET.
Rappels sur le framework .Net 2.0 • Générics • Classes partielles • Méthodes anonymes • Délégués simplifiés • Types Nullables • Rappel sur les énumérations: yield return !!!
Dans un avenir procheLinq, DLinq et XLinq • Objectifs • Unifier l’accès aux données quelque soit sa source • Langage de requête objet quelque soit sa provenance • Les technologies • Linq : langage de manipulation de données • XLinq : extension spécifique de Linq pour le formalisme XML • DLinq : extension spécifique de Linq pour les données SQL
Linq • Les évolutions • Query Expression • Possibilité d’exprimer une requête directement dans le code • Type inference • Déduction à la compilation du type d’un objet • Lambda expression • Utilisation d’expression Lambda directement dans le code • Extension methods • Etendre une classe sans en dériver par AOP • Anonymous type • Construction d’objet sans définition de classe • Object initializer • Possibilité d’initialiser des données membres à l’initialisation • Langages concernés • C# v3 et VB.NET v9, mais spécifications ouvertes (C++, Delphi..)
Dans un avenir proche Query expressions var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone }; Local variable type inference Lambda expressions var contacts = customers .Where(c => c.State == "WA") .Select(c => new { c.Name, c.Phone }); Extension methods Anonymous types Object initializers
Process démo Demo
C#3 • Déclarations explicites • Initialisations • Types anonymes • Méthodes d’extension • Expressions lambda
Filter démo Demo
Process démo 2ème Extensions de méthode Exécution différée Demo
Sample query Demo
DLinq • L’accès aux données • DataContext • Les requêtes de mise à jour • Les structures de données: • Les objets « entités » • Mapping par attributs • Le générateur, le designer • Les requêtes • L’arborescence d’expressions • Un modèle ouvert et extensible
DLinq Helloworld Entity objects DataContext Mises à jour Relations Demo
Nouveautés: Générateur/Designer Demo
Sample query Demo