Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional...

Post on 03-Apr-2015

115 views 3 download

Tags:

Transcript of Bernard Fedotoff bfedotoff@hotmail.com bfedotoff@hotmail.com Consultant.NET & Microsoft Regional...

Introduction à Entity Framework

Bernard Fedotoff bfedotoff@hotmail.com Consultant .NET & Microsoft Regional DirectorAgilcomwww.agilcom.info

Agenda

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

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.)

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

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 ;

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 ;

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

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 ;

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 ;

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.

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>

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) ;

Rappel

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

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

Save the date for tech·days next year!

14 – 15 avril 2010, CICG

Classic Sponsoring Partners

Premium Sponsoring Partners