c#3 et le projet linq mitsuru furuta relations techniques développeurs - microsoft france...

19
C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France [email protected] http://blogs.microsoft.fr/mitsufu Pierre LAGARDE Relations techniques développeurs - Microsoft France [email protected]

Upload: lammert-paul

Post on 03-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

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]

Page 2: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

Agenda

Introduction

Rappels sur le framework .Net 2.0

Linq

C#3

Pause

XLinq

DLinq

Page 3: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

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.

Page 4: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

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 !!!

Page 5: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

Rappels framework 2.0

DemoDemo

Page 6: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

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

Page 7: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

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..)

Page 8: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

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

Page 9: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

Process démo

DemoDemo

Page 10: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

C#3

Déclarations explicites

Initialisations

Types anonymes

Méthodes d’extension

Expressions lambda

Page 11: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

Filter démo

DemoDemo

Page 12: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

Process démo 2ème

Extensions de méthode Exécution différée

DemoDemo

Page 13: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

Sample query

DemoDemo

Page 14: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

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

Page 15: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

DLinq Helloworld Entity objects DataContext Mises à jour Relations

DemoDemo

Page 16: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

Expressions: visualiser l’arborescence

DemoDemo

Page 17: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

Expressions: créer dynamiquement ses expressions

DemoDemo

Page 18: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

Nouveautés: Générateur/Designer

DemoDemo

Page 19: C#3 et le projet Linq Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu

Sample query

DemoDemo