C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France...
-
Upload
lammert-paul -
Category
Documents
-
view
103 -
download
0
Transcript of C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France...
C#3 et le projet Linq
Mitsuru FURUTA
Relations techniques développeurs - Microsoft [email protected] – http://blogs.microsoft.fr/mitsufu
Pierre LAGARDE
Relations techniques développeurs - Microsoft [email protected]
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éesLinq 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 !!!
Rappels framework 2.0
DemoDemo
Dans un avenir procheLinq, DLinq et XLinq
ObjectifsUnifier l’accès aux données quelque soit sa sourceLangage de requête objet quelque soit sa provenance
Les technologiesLinq : langage de manipulation de données XLinq : extension spécifique de Linq pour le formalisme XMLDLinq : extension spécifique de Linq pour les données SQL
Linq
Les évolutionsQuery Expression
Possibilité d’exprimer une requête directement dans le codeType inference
Déduction à la compilation du type d’un objetLambda expression
Utilisation d’expression Lambda directement dans le codeExtension methods
Etendre une classe sans en dériver par AOPAnonymous type
Construction d’objet sans définition de classeObject initializer
Possibilité d’initialiser des données membres à l’initialisationLangages concernés
C# v3 et VB.NET v9, mais spécifications ouvertes (C++, Delphi..)
Dans un avenir proche
var contacts =var contacts = from c in customersfrom c in customers where c.State == "WA"where c.State == "WA" select new { c.Name, c.Phone };select new { c.Name, c.Phone };
var contacts =var contacts = customerscustomers .Where(c => c.State == "WA").Where(c => c.State == "WA") .Select(c => new { c.Name, c.Phone });.Select(c => new { c.Name, c.Phone });
Extension Extension methodsmethods
Lambda Lambda expressionsexpressions
Query Query expressionsexpressions
Object Object initializersinitializers
Anonymous Anonymous typestypes
Local Local variable type variable type
inferenceinference
Process démo
DemoDemo
C#3
Déclarations explicites
Initialisations
Types anonymes
Méthodes d’extension
Expressions lambda
Filter démo
DemoDemo
Process démo 2ème
Extensions de méthode Exécution différée
DemoDemo
Sample query
DemoDemo
DLinq
L’accès aux donnéesDataContext
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êtesL’arborescence d’expressions
Un modèle ouvert et extensible
DLinq Helloworld Entity objects DataContext Mises à jour Relations
DemoDemo
Expressions: visualiser l’arborescence
DemoDemo
Expressions: créer dynamiquement ses expressions
DemoDemo
Nouveautés: Générateur/Designer
DemoDemo
Sample query
DemoDemo