17
Introduction à Entity Framework Bernard Fedotoff [email protected] Consultant .NET & Microsoft Regional Director Agilcom www.agilcom.info

Bernard Fedotoff [email protected] [email protected] Consultant.NET & Microsoft Regional Director Agilcom

Embed Size (px)

Citation preview

Page 1: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Introduction à Entity Framework

Bernard Fedotoff [email protected] Consultant .NET & Microsoft Regional DirectorAgilcomwww.agilcom.info

Page 2: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Agenda

Présentation d’Entity FrameworkPrincipe du mappageEntity Client & Object ServiceEntity Framework vs Linq-to-SQL ?Question Performance

Page 3: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Entity Framework Introduction

Livré avec le SP1 de .Net 3.5 ;C’est un composant d’ADO.NET ;« Entity Framework » aide le développeur à abstraire les données dans un modèle conceptuel ;L’interaction avec le modèle est réalisée au travers d’un nouveau fournisseur de données « EntityClient »Indépendant de la base de données cible (Sql Server, Oracle, MySql, PostGreSql, SqlLite, NpgSql, Sybase, DB2, Informix, U2, etc.)

Page 4: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Entity FrameworkLe modèle

Base dedonnées

Shéma des objets de la

base de données

Modèle de stockage

*.MSL*.SSD

L

Mappage

Classes objets

Schéma du modèle des entités de données

Modèle conceptuel

*.CSDL

SSDL : Store Schema Definition LanguageMSL : Mapping Schema Language CSDL : Conceptual Schema Definition Language

XML

Page 5: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Entity FrameworkLes outils de Visual Studio 2008 SP1

L’assistant « Entity Data Model »Génère un modèle à partir d’une base de données existante (en ressource) ;Génère la chaine de connexion au modèle ;Génère le code (C# ou VB.NET) des classes basées sur le modèle conceptuel ;

Le Designer d’entités « Entity Designer »

Créé ou modifie un modèle complet ;L’assistant de mise à jour

Aide à mettre à jour un modèle en cas de changement de la base de données ;

Page 6: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Entity Client

C’est un modèle d’objet ADO.NETEntityCommandEntityConnectionEntityDataReaderEntityParameterEntityTransaction

Comme ADO.NET, les résultats sont retournés sous forme d’un flux texte, lu avec un DataReaderEntity Client propose un accès rapide mais en lecture seulement sur le modèle d’entités ;Les requêtes sont écrites en Entity SQL ;

Page 7: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Entity SQL

C’est un langage proche du T-SQLIl cible le modèle conceptuelIl est indépendant de la base de données sous-jacente

T-SQL

Entity SQL

Page 8: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Les objets du service

Les objets générés représentent des requêtes :

ObjectContextObjectQuery<T>

Ces objets sont construits au dessus d’Entity Client (les requêtes sont traduites en Entity-SQL) ;Les requêtes s’expriment en utilisant Entity-SQL ou LINQ ;

Page 9: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Le mappageLa modélisation propose des possibilités de regrouper / dégrouper les tables et les entités :

Héritage TPT (Table per Type Inheritance)C’est la modélisation d’un héritage entre des entités qui sont chacune mappée vers une table distincte ;

Dégroupage d’entités (Entity Splitting)C’est la modélisation d’une seule entité dont les informations proviennent de plusieurs tables ;

Héritage TPH (Table per Hierarchy Inheritance)

C’est la modélisation de plusieurs entités dont les informations proviennent de la même table : dans ce cas une colonne discriminante est précisée ;

Page 10: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Entity Framework vs Linq-to-Sql

Entity Framework Linq-to-SQL

Framework .Net .NET 3.5 SP1 .NET 3.5

Méta Données Fichiers SSDL, CSDL, MSL au format XML Attributs de classe

Mappage Plusieurs scénarios possibles

Mappage « un pour un »

Designer Génération, Mise à jour du modèle, etc.

Assistant de génération

Bases de données cibles

SQL Server, Oracle, MySql, Db2, etc. SQL Server

Requêtes Entity-SQL, LINQ LINQ

Linq-to-Sql devrait être intégré à Entity Framework dans un futur proche.

Page 11: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

La performance

D’un point de vue SQLGénération des requêtes T-SQL par l’objet de Context qui analyse l’Entity-SQL ;T-SQL dans le cas où il n’y a pas de paramètre ;sp_executesql dans le cas de paramètres ;Mappage possible sur des procédures stockées ;

La génération des vuesAvant d’exécuter une requête sur un modèle, EF doit générer des vues locales ; Le coût de cette génération est fort ;Possibilité de générer ces vues avec EdmGen.Exe

EdmGen.exe /nologo /language:CSharp mode:ViewGeneration /inssdl:<ssdl> /incsdl:<csdl> /inmsl:<msl> /outviews: <cs>

Page 12: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Intérêt de Entity Framework

Modèle simple et rapide de développement de couche d’abstraction des données ;Entity-SQL est indépendant de la base de données cible ;.NET propose des services d’exposition d’un modèle conceptuel :

ASP.NET Dynamic DataADO.NET Dynamic Data

Evolution des modèles vers SQL DataService (Windows Azure et Cloud Computing) ;

Page 13: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Rappel

Présentation d’Entity FrameworkPrincipe du mappageEntity Client & Object ServiceEntity Framework vs Linq-to-SQL ?Question Performance

Page 14: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Plus d’informationsKit de formation pour .Net 3.5 SP1 :

http://www.microsoft.com/downloads/details.aspx?FamilyID=355c80e9-fde0-4812-98b5-8a03f5874e96&displaylang=en

Page d’accueil EFhttp://msdn.microsoft.com/en-us/library/bb399572.aspx

Les providers du marchéhttp://msdn.microsoft.com/en-us/data/dd363565.aspx

Les outilshttp://msdn.microsoft.com/en-us/library/bb399249.aspx

Les blogshttp://blogs.msdn.com/adonet/archive/tags/Entity+Framework/default.aspx

Du code

http://code.msdn.microsoft.com/adonetefx/ Les vidéos de la PDC 2008

http://microsoftpdc.com/Default.aspx

Page 15: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Save the date for tech·days next year!

14 – 15 avril 2010, CICG

Page 16: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom

Classic Sponsoring Partners

Premium Sponsoring Partners

Page 17: Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional Director Agilcom