Post on 05-Jan-2016
description
22
Entity Framework 4
Alexandre EQUOYAccess-IThttp://blogs.access-it.net
Matthieu MEZILAccess-IT
http://blogs.codes-sources.com/matthieu
33
Access It en quelques mots…
Consulting/expertise, réalisation (projet /assistance technique) et formation (CPLS) sur les technologies Microsoft
Haut niveau de certification2 agences à Lille et Paris, couverture nationaleCentre des Usages pour la région Nord
3 grands domaines d’expertise technologiquePlateforme applicative : SharePoint, SQL Server & BI, BizTalk.Net : architecture, Framework & langages, RIA/RDA (Silverlight, WPF, Surface), industrialisation/ALM (TFS/VSTS)…Infrastructure : poste de travail, serveurs, virtualisation, messagerie, annuaire…
http://www.access-it.fr
44
Agenda
Introduction à Entity FrameworkMappingEntity Framework 4
Les nouveautésModel FirstScenario POCO : objets ignorants la persistance
Templates de génération de code T4Scenarii N-Tiers
55
Introduction à Entity Framework
Object-Relational MappingPrincipesMapping…
Pourquoi ?Gain de productivité Complexité du mapping entre les objets métiers et la base
de données gérée par le frameworkRequêtage sur le modèle indépendamment de la base de
données via LINQ (entre autre)Le modèle est bien plus qu’un simple mapping, il est
possible de l’enrichir (métadonnées par exemple)
66
Séparation : Modèle Conceptuel / Modèle Relationnel
Conc
eptu
al •Entités, Relations• Contraintes référentielles• Target de l’application
SalesPerson
SalesOrder
StoreOrder
SalesPerson
Employee StoreOrder
Phys
ical
Contact
• Record formats, file groups• Indexes, file partitions• Apps unaware of this levelSalesOrder
Logi
cal
• Tables, rows, keys• PK/FK constraints• Normalization• Data independence
SalesPerson SalesOrder
Employee Contact
77
Entity Data Model (EDM)
Relational Database
DatabaseObjectsSchema
Storage Model
*.MSL*.SSDL
Map
OO Classes
Entity Data ModelSchema
Conceptual Model
*.CSDL
Source Julia Lerman, www.thedatafarm.com
88
DémoMapping
99
Entity Framework 4
Intégration des FKLazy LoadingModel FirstPOCOAmélioration du designerFonctions CSDLAmélioration des requêtes SQL généréesAjouts de règles de validations au niveau du modèle…
1010
Différentes possibilités : Clés du succès
Je commence mon application par la base de données“La base de données représente la vérité”Pourquoi ? Elle existe déjàQue faire ? Importer le modèle de stockage dans l’edmx et l’enrichir
Je commence avec mon modèle edmx“Le modèle conceptuel est la vérité”Pourquoi ? Je veux séparer mon code de la base formellement et surtout je pars de zéroQue faire ? Je crée mon modèle, je génère ma base et ma couche d’entité à partir du modèle
Je commence par ma couche objet à base de classes .net“Mon code contient la vérité”Pourquoi ? Mon analyse est fondée sur l’objet, la conception de la base de données est faite indépendamentQue faire ? Je défini mes classes, je crée mon context et je mappe ma conception objet sur la conception relationnelle
1111
DémoModel First
1212
DémoModel & DB First
1313
Template T4 : Augmenter la productivité
Certaines problématiques sont récurrentes :Génération d’entitéCertaines méthodes de services ( GetCustomers,
GetOrders,…)
N'attendez plus : adoptez le réflexe T4
1414
Template T4 : Utilisation de l'EDM pour générer le code
Template qui existe dans Visual Studio depuis 2005 mais « caché »
Microsoft fournit des API permettant d’accéder aux Metadonnées de l’EDM
Microsoft fournit les templates de génération d’entités et de contexte se basant sur ces métadonnées
Possibilité de customiser soi-même ces templates
1515
DémoCustomisation des templates MS
1616
Scenarii N-Tiers
Il existe des technologies qui permettent d’exposer « sans effort » les entités à travers des services :
ADO.Net Data ServicesRIA Services
Ces technologies ont des limitesPour palier cela, l’utilisation de WCF est nécessaire
1717
Scenarii N-Tiers avec WCF
Le tracking des modifications est effectué par le contexte Entity FrameworkComme les entités sont sérialisées sans ce context, par défaut,
les changements côté client ne sont pas trackésIl existe des palliatifs fastidieux et souvent non optimaux
Nouveauté de EF4 : Self-Tracking Entities (template T4)Les entités sont capables de tracker elles-mêmes les
modificationsLe tracking fait partie de l’entité. Il est sérialisé avec elle
1818
Exploiter la puissance de T4
T4 n’est pas limité à la génération d’entité et de contexteOn peut imaginer une génération automatique des canevas de
services WCF liés aux entitésEt bien plus…
1919
DémoScenario N-Tiers avec WCF généré par T4
2020
http://msdn.microsoft.com/fr-fr/msdn.saga-efx.aspx
2121
Questions ?