View
109
Download
0
Category
Preview:
Citation preview
Rencontres accès aux données 2007
Mitsuru FURUTARelations techniques développeursMicrosoft Francehttp://blogs.msdn.com/mitsuhttp://blogs.msdn.com/mitsufu
Agenda
Accueil Introduction Apprendre Linq to Sql Comprendre Linq to Sql Bonus ? Conclusion
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 ?
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.
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
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
Introduction: rappels
Mode connecté vs déconnecté Sql dynamique vs procédures
stockées DataSet vs objets
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)
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)
Linq to Sql: le mapping
Attribut Table et Column Le designer Linq to Sql classes
SqlMetal Mapping externe
Démo
Le mapping
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
Démo
Différentes démos sur le requêtage
Linq to Sql: le requêtage
Groupements: group by Contraintes: having Tris
Existence: exist, in, any, all Nullité Fonctions: chaines et dates
Démo
Différentes démos sur le requêtage
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
Démo
Les conversions Les projections
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é
Démo
Les mises à jour Simples Conflictuelles
Linq to Sql: DataContext
Support des procédures stockées Cohabitation avec ADO.NET:
Partage de connexion Partage de transaction
Sql direct
Démo
Procédures stockées
Linq to Sql: les relations
1-1: EntityRef 1-N: EntitySet Deferred loading Delay loading Requêtage Schéma de chargement:
DataLoadOptions LoadWith AssociateWith
Linq to Sql: les relations
customer.Orders[]order.Customer
Démo
Les relations Le Deferred Loading Le Delay Loading Schémas de chargement
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
Démo
Combiner les requêtes entre elles Héritage Databinding Méthodes partielles CompiledQuery
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
Démo
De .Net à Linq to Sql
Bonus
Construction de requête dynamique Relations N-N Linq to DataSet
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
Le projet « Visual Linq »
Query Builder visuel pour Linq
Recommended