31
Rencontres accès aux données 2007 Mitsuru FURUTA Relations techniques développeurs Microsoft France http://blogs.msdn.com/mitsu http://blogs.msdn.com/mitsufu

Mitsuru FURUTA Relations techniques développeurs Microsoft France

Embed Size (px)

Citation preview

Page 1: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Rencontres accès aux données 2007

Mitsuru FURUTARelations techniques développeursMicrosoft Francehttp://blogs.msdn.com/mitsuhttp://blogs.msdn.com/mitsufu

Page 2: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Agenda

Accueil Introduction Apprendre Linq to Sql Comprendre Linq to Sql Bonus ? Conclusion

Page 3: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Introduction

.Net et l’accès aux données aujourd’hui ADO.Net Les DataSets Les outils de mapping O/R Les frameworks « maison »

Doit-on encore connaître le Sql ? Pourquoi chercher à ne plus

manipuler de Sql ?

Page 4: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Introduction

Pourquoi chercher à ne plus manipuler de Sql ? Ne manipuler qu’un seul langage (le

code). Bénéficier de l’intellisense, du débogage

et de la vérification à la compilation. Ne pas apprendre sa (ses) syntaxe(s). Rechercher l’indépendance de la base de

données.

Page 5: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Introduction

Demain: Linq to Sql V1 Mapper des classes .Net sur un schéma relationnel. Exprimer des requêtes Sql avec des requêtes Linq. Interception des changements et génération d’insert,

update, delete. Accès physique entièrement basé sur ADO.NET Supportera les bases de données Sql Server (2005, 2000

et Compact) “Post-Orcas direction will depend on customer feedback

but no promises can be made about specific features” Après demain: Linq to Entities

Framework de mapping objet relationnel. Support de la technologie Linq pour requêter le modèle. Provider ouvert Rdv aux TechDays

Page 6: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Que recherchons nous vraiment ?

Automatisation de la couche d’accès aux données

Performance Consommation mémoire Productivité Outil de conception Abstraction de la base Gestion du changement

??Constat• Nous avons tous des attentes différentes• Nous savons que cette couche est déterminante• Beaucoup de solutions et beaucoup de polémiques

Constat• Nous avons tous des attentes différentes• Nous savons que cette couche est déterminante• Beaucoup de solutions et beaucoup de polémiques

Page 7: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Introduction: rappels

Mode connecté vs déconnecté Sql dynamique vs procédures

stockées DataSet vs objets

Page 8: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Qu’est-ce que Linq ?

Objects

<book> <title/> <author/> <price/></book>

XMLRelational

LINQ enabled data sources

LINQ To Objects

LINQ To XML

LINQ enabled ADO.NET

LINQ To Entities

LINQ To SQL

LINQ To Datasets

.NET Language Integrated Query (LINQ)

Page 9: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Apprendre Linq to Sql

Une nouvelle technologie de requêtage principalement basée sur les évolutions des langages .Net. (C# 3 et VB 9)

Une API simple assurant les scénarii classiques d’un modèle déconnecté tel que le fait le DataSet.

Un modèle laissant un maximum de liberté aux entités (attributs, pas de classe de base, pas de collections)

Page 10: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Linq to Sql: le mapping

Attribut Table et Column Le designer Linq to Sql classes

SqlMetal Mapping externe

Page 11: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Démo

Le mapping

Page 12: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Linq to Sql: le requêtage

dataContext.Log Projection: select Contraintes: where Agrégations: count, sum, min, max,

avg Jointures Tris Ensembles: unions, intersections,

exclusions, concaténations, distinct Pagination: top

Page 13: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Démo

Différentes démos sur le requêtage

Page 14: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Linq to Sql: le requêtage

Groupements: group by Contraintes: having Tris

Existence: exist, in, any, all Nullité Fonctions: chaines et dates

Page 15: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Démo

Différentes démos sur le requêtage

Page 16: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Linq to Sql: conversions

ToArray, ToList, ToDictionary Linq to object: les mêmes

fonctionnalités côté client. Mixer Linq to Sql et Linq to object:

Projections particulières Appel de méthodes locales

Page 17: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Démo

Les conversions Les projections

Page 18: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Linq to Sql: DataContext

Encapsulation d’ADO.NET (connexion, transaction, commandes, curseurs).

Mises à jour: Gestion d’un cache parallèle au cycle de vie des

entités:▪ Valeurs des propriétés pour les updates▪ Ajouts et suppressions dans les collections pour les

insert/delete▪ Accès au cache

Insert, update, delete:▪ Mise à jour optimiste▪ Transactions implicites et explicites▪ Résolutions des conflits, rafraichissement forcé

Page 19: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Démo

Les mises à jour Simples Conflictuelles

Page 20: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Linq to Sql: DataContext

Support des procédures stockées Cohabitation avec ADO.NET:

Partage de connexion Partage de transaction

Sql direct

Page 21: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Démo

Procédures stockées

Page 22: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Linq to Sql: les relations

1-1: EntityRef 1-N: EntitySet Deferred loading Delay loading Requêtage Schéma de chargement:

DataLoadOptions LoadWith AssociateWith

Page 23: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Linq to Sql: les relations

customer.Orders[]order.Customer

Page 24: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Démo

Les relations Le Deferred Loading Le Delay Loading Schémas de chargement

Page 25: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Linq to Sql: fonctions avancées

Combiner les requêtes entre elles Héritage:

Collections hétérogènes Contraintes: is, as, cast Insert

Databinding Designer Linq to Sql: classes et méthodes

partielles Personnalisation du DataContext typé Personnalisation des entités

Requêtes précompilées: CompiledQuery

Page 26: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Démo

Combiner les requêtes entre elles Héritage Databinding Méthodes partielles CompiledQuery

Page 27: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Comprendre Linq to Sql

Quand les requêtes Sql sont-elles donc exécutées ? Notion de chargement différé Chaînage des requêtes

Qu’est-ce qu’une énumération ? Introduction aux expressions de Linq

Page 28: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Démo

De .Net à Linq to Sql

Page 29: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Bonus

Construction de requête dynamique Relations N-N Linq to DataSet

Page 30: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Conclusion

Productivité Designer/générateur Typé: intellisense

Fiabilité Modèle compilé Générisation: intensivement basé sur les génériques, Linq to

Sql n’apporte que très peu de classes et rend notre code très ‘generic’.

Maintenance de code Modèle compilé Gestion du changement facilitée

Conception ouverte (modèle très libre) Combinaison des requêtes Débogage

Page 31: Mitsuru FURUTA Relations techniques développeurs Microsoft France

Le projet « Visual Linq »

Query Builder visuel pour Linq