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

Post on 03-Apr-2015

105 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

C#3 et le projet Linq

Mitsuru FURUTA

Relations techniques développeurs - Microsoft Francemitsufu@microsoft.com – http://blogs.microsoft.fr/mitsufu

Pierre LAGARDE

Relations techniques développeurs - Microsoft Francepierlag@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é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

top related