Mitsuru FURUTA Relations techniques développeurs Microsoft France
Accueil Introduction Apprendre Linq to Sql Comprendre Linq to Sql Bonus ? Conclusion
.Net et laccès aux données aujourdhui 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 ?
Ne manipuler quun seul langage (le code). Bénéficier de lintellisense, du débogage et de la vérification à la compilation. Ne pas apprendre sa (ses) syntaxe(s). Rechercher lindépendance de la base de données.
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 dinsert, 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
Automatisation de la couche daccè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
Mode connecté vs déconnecté Sql dynamique vs procédures stockées DataSet vs objets
Objects 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)
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 dun 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)
Attribut Table et Column Le designer Linq to Sql classes SqlMetal Mapping externe
Le mapping
dataContext.Log Projection: select Contraintes: where Agrégations: count, sum, min, max, avg Jointures Tris Ensembles: unions, intersections, exclusions, concaténations, distinct Pagination: top
Différentes démos sur le requêtage
Groupements: group by Contraintes: having Tris Existence: exist, in, any, all Nullité Fonctions: chaines et dates
Différentes démos sur le requêtage
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
Les conversions Les projections
Encapsulation dADO.NET (connexion, transaction, commandes, curseurs). Mises à jour: Gestion dun 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é
Les mises à jour Simples Conflictuelles
Support des procédures stockées Cohabitation avec ADO.NET: Partage de connexion Partage de transaction Sql direct
Procédures stockées
1-1: EntityRef 1-N: EntitySet Deferred loading Delay loading Requêtage Schéma de chargement: DataLoadOptions LoadWith AssociateWith
customer.Orders[] order.Customer
Les relations Le Deferred Loading Le Delay Loading Schémas de chargement
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
Combiner les requêtes entre elles Héritage Databinding Méthodes partielles CompiledQuery
Quand les requêtes Sql sont-elles donc exécutées ? Notion de chargement différé Chaînage des requêtes Quest-ce quune énumération ? Introduction aux expressions de Linq
De.Net à Linq to Sql
Construction de requête dynamique Relations N-N Linq to DataSet
Productivité Designer/générateur Typé: intellisense Fiabilité Modèle compilé Générisation: intensivement basé sur les génériques, Linq to Sql napporte 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
Query Builder visuel pour Linq