Introduction à Entity Framework 3/30/2017 12:05 PM Introduction à Entity Framework Bernard Fedotoff bfedotoff@hotmail.com Consultant .NET & Microsoft Regional Director Agilcom www.agilcom.info © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Agenda Présentation d’Entity Framework Principe du mappage Entity Client & Object Service Entity 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 Framework Le modèle Modèle de stockage Mappage Modèle conceptuel Shéma des objets de la base de données Schéma du modèle des entités de données *.SSDL *.MSL *.CSDL Base de données Classes objets SSDL : Store Schema Definition Language MSL : Mapping Schema Language CSDL : Conceptual Schema Definition Language XML
Entity Framework Les 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.NET EntityCommand EntityConnection EntityDataReader EntityParameter EntityTransaction Comme ADO.NET, les résultats sont retournés sous forme d’un flux texte, lu avec un DataReader Entity 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-SQL Il cible le modèle conceptuel Il 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 : ObjectContext ObjectQuery<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 mappage La 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 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 SQL La génération des vues Gé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 vues Avant 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 Data ADO.NET Dynamic Data Evolution des modèles vers SQL DataService (Windows Azure et Cloud Computing) ;
Rappel Présentation d’Entity Framework Principe du mappage Entity Client & Object Service Entity Framework vs Linq-to-SQL ? Question Performance
Plus d’informations Kit 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 EF http://msdn.microsoft.com/en-us/library/bb399572.aspx Les providers du marché http://msdn.microsoft.com/en-us/data/dd363565.aspx Les outils http://msdn.microsoft.com/en-us/library/bb399249.aspx Les blogs http://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! 3/30/2017 12:05 PM Save the date for tech·days next year! 14 – 15 avril 2010, CICG © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Premium Sponsoring Partners 3/30/2017 12:05 PM Premium Sponsoring Partners Classic Sponsoring Partners © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
3/30/2017 12:05 PM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.