Article de reference

Entity Framework

Entity Framework Core: v10.0.0"},"latest release date":{"wt":"Entity Framework Core: {{Start date and age|2025|11|11}} {{cite web |title=Releases · dotnet/efcore · GitHub|websit...

de mappage objet-relationnel (ORM) open source pour ADO.NET . Il était initialement livré comme partie intégrante de .NET Framework , mais à partir de la version 6.0 d'Entity Framework, il est distribué séparément de .NET Framework.

Entity Framework 6.4 était la dernière version du framework classique. Bien qu'Entity Framework 6 soit toujours pris en charge, son développement est arrêté et il ne recevra plus que des correctifs pour les failles de sécurité.

Un nouveau framework appelé Entity Framework Core (EF Core) a été introduit en 2016 avec des fonctionnalités similaires, mais pas identiques. La numérotation des versions de ce framework a redémarré à partir de 1.0.

ADO.NET qui facilite le développement d'applications logicielles orientées données. Les architectes et les développeurs de ces applications sont généralement confrontés à la nécessité de concilier deux objectifs très différents : modéliser les entités, les relations et la logique des problèmes métier qu'ils résolvent, et interagir avec les moteurs de données utilisés pour stocker et extraire ces données. Ces dernières peuvent être réparties sur plusieurs systèmes de stockage, chacun avec ses propres protocoles ; même les applications fonctionnant avec un seul système de stockage doivent trouver un équilibre entre les exigences de ce système et celles liées à l'écriture d'un code applicatif efficace et maintenable. Ce problème est généralement désigné comme une « incompatibilité d'impédance objet-relationnelle »

De nombreux outils de mappage objet-relationnel (ORM), également appelés « gestionnaires objet-relationnel », ont été développés pour permettre aux développeurs de manipuler des données sous forme d'objets et de propriétés spécifiques au domaine, comme les clients et leurs adresses, sans avoir à se soucier des tables et colonnes de la base de données sous-jacente. Grâce à un ORM, les développeurs peuvent travailler à un niveau d'abstraction plus élevé et créer et maintenir des applications orientées données avec moins de code que les applications traditionnelles. Entity Framework est la solution ORM actuellement recommandée au sein de l'environnement de développement Microsoft.

Histoire

La première version d'Entity Framework (EFv1) a été incluse dans .NET Framework 3.5 Service Pack 1 et Visual Studio 2008 Service Pack 1, publiés le licence Apache v2. À l'instar d' ASP.NET MVC , son code source est hébergé sur GitHub via Git. Cette version apporte plusieurs améliorations pour la prise en charge de l'approche licence Apache v2 et a été entièrement développé en open source sur GitHub . Bien qu'il partage certaines similitudes conceptuelles avec les versions précédentes d'Entity Framework, il s'agit d'une base de code entièrement nouvelle, conçue pour être plus efficace, puissante, flexible et extensible, fonctionnant sous Windows, Linux et macOS, et prenant en charge une nouvelle gamme de bases de données relationnelles et NoSQL .

Entity Framework Core 2.0 a été publié le

Pile ADO.NET Entity Framework.

L'architecture d'ADO.NET Entity Framework, de bas en haut, se compose des éléments suivants :L'analyseur EDM et le mappage des vues prennent en entrée la spécification SDL du modèle de données et son mappage sur le modèle relationnel sous-jacent, permettant ainsi la programmation sur le modèle conceptuel. À partir du schéma relationnel, il crée des vues des données correspondant au modèle conceptuel. Il agrège les informations provenant de plusieurs tables afin de les regrouper en une entité, et divise la mise à jour d'une entité en plusieurs mises à jour des tables ayant contribué à cette entité.

  • Le pipeline de requêtes et de mises à jour traite les requêtes, les filtre et les met à jour pour les convertir en arbres de commandes canoniques qui sont ensuite convertis en requêtes spécifiques au magasin par le fournisseur de cartes.
  • Les services de métadonnées gèrent toutes les métadonnées relatives aux entités, aux relations et aux mappages.
  • Les transactions doivent s'intégrer aux fonctionnalités transactionnelles du système de stockage sous-jacent. Si ce dernier ne prend pas en charge les transactions, cette fonctionnalité doit être implémentée à ce niveau.
  • L'API de la couche conceptuelle est l'environnement d'exécution qui expose le modèle de programmation permettant de coder en fonction du schéma conceptuel. Elle suit le modèle ADO.NET : utilisation d'objets Connection pour se connecter au fournisseur de cartes, d'objets Command pour envoyer la requête et retour d'EntityResultSets ou d'EntitySets contenant le résultat.
  • Composants déconnectés , qui mettent en cache localement les ensembles de données et les ensembles d'entités pour l'utilisation d'ADO.NET Entity Framework dans un environnement connecté de manière occasionnelle.
  • Base de données embarquée : ADO.NET Entity Framework inclut une base de données embarquée légère pour la mise en cache côté client et l’interrogation des données relationnelles.
  • Des outils de conception , tels que Mapping Designer, sont également inclus dans ADO.NET Entity Framework, ce qui simplifie la tâche de mappage d'un schéma conceptuel au schéma relationnel et de spécification des propriétés d'un type d'entité correspondant à quelle table de la base de données.
  • Couche de programmation , qui expose l'EDM sous forme de constructions de programmation pouvant être consommées par les langages de programmation.
    • Les services d'objets génèrent automatiquement le code des classes CLR qui exposent les mêmes propriétés qu'une entité, permettant ainsi l'instanciation d'entités en tant qu'objets .NET.
    • Les services Web , qui exposent des entités sous forme de services Web.
  • Les services de haut niveau , tels que les services de reporting, qui fonctionnent sur des entités plutôt que sur des données relationnelles.
  • Modèle de données d'entité

    Le modèle de données d'entités ( EDM ) spécifie le modèle conceptuel (CSDL) des données, en utilisant une technique de modélisation elle-même appelée modèle de données d'entités, une version étendue du modèle entité-relation . Le modèle de données décrit principalement les entités et les associations auxquelles elles participent. Le schéma EDM est exprimé en langage de définition de schéma (SDL), une application du langage XML (Extended Markup Language). De plus, le mappage (MSL) des éléments du schéma conceptuel (CSDL) vers le schéma de stockage (SSDL) doit également être spécifié. Cette spécification de mappage est également exprimée en XML

    Un modèle d'entité créé à l'aide d'Entity Framework 6 qui représente les tables Client, Commande et Produit

    Visual Studio propose également l' Entity Designer pour la création visuelle du modèle de données d'entreprise (EDM) et de la spécification de mappage. Cette approche, appelée « Model First », est une alternative aux approches « Code First » et « Database First ». L'outil génère un fichier XML (*.edmx) spécifiant le schéma et le mappage. Ce fichier contient les métadonnées EF (contenu CSDL/MSL/SSDL). Ces trois fichiers (CSDL, MSL et SSDL) peuvent également être créés ou modifiés manuellement. L'approche « Model First » ne sera pas prise en charge par EF Core. jointures nécessaires pour référencer les informations d'une entité provenant de plusieurs tables, ou lors du parcours d'une relation. Lorsqu'une entité est mise à jour, elle identifie la table d'origine des informations et exécute des instructions SQL UPDATE pour mettre à jour les tables concernées. ADO.NET Entity Framework utilise eSQL, un dérivé de SQL, pour effectuer des requêtes, des opérations ensemblistes et des mises à jour sur les entités et leurs relations. Les requêtes eSQL sont ensuite traduites, si nécessaire, en SQL natif de la base de données sous-jacente.d'objets , leurs éléments et relations étant exposés en tant que propriétés. Ainsi, les objets Entity ne sont qu'une interface pour les instances des types d'entités EDM, permettant aux langages orientés objet d'y accéder et de les utiliser. De même, d'autres interfaces peuvent être créées pour exposer les entités via des services web (par exemple, WCF Data Services ) ou XML, utilisé lors de la sérialisation des entités pour le stockage persistant ou le transfert réseau.

    Entités

    Les entités sont des instances d' EntityType ; elles représentent les instances individuelles des objets (tels que client , commandes ) auxquels les informations se rapportent. L'identité d'une entité est définie par le type d'entité dont elle est une instance ; en ce sens, un type d'entité définit la classe à laquelle appartient une entité et définit les propriétés qu'elle possède. Les propriétés décrivent un aspect de l'entité en lui attribuant un nom et un type. Les propriétés d'un type d'entité dans ADO.NET Entity Framework sont entièrement typées et compatibles avec le système de types utilisé dans un SGBD, ainsi qu'avec le système de types commun du .NET Framework. Une propriété peut être de type simple ou complexe , et peut également être multivaluée. Tous les EntityType appartiennent à un espace de noms et possèdent une propriété EntityKey qui identifie de manière unique chaque instance du type d'entité. Les différents types de propriétés sont distingués comme suit :Type EDMType de mappage CLREdm.BinaireCTS , notamment String , Int32 , Double , Decimal , Guid et DateTime . Une énumération , qui définit une association de valeurs et de noms primitifs, est également considérée comme un type simple. Les énumérations sont prises en charge à partir de la version 5.0 du framework. Les types complexes sont créés par agrégation d'autres types. Un ensemble de propriétés de ces types définit un type d'entité. Cette définition peut être écrite en notation EBNF comme suit :> <Property Name= "Street" Type= "String" Nullable= "false" /> <Property Name= "City" Type= "String" Nullable= "false" /> <Property Name= "Country" Type= "String" Nullable= "false" /> <Property Name= "PostalCode" Type= "Int32" /> </ComplexType> <EntityType Name= "Customer" > <Key> <PropertyRef Name= "Email" /> </Key> <Property Name= "Name" Type= "String" /> <Property Name= "Email" Type= "String" Nullable= "false" /> <Property Name= "Address" Type= "Addr" /> </EntityType>

    Un type de relation est défini en spécifiant les points d'extrémité et leurs multiplicités. Par exemple, une relation un-à-plusieurs entre Client et Commandes peut être définie comme suit :

    > <End Type= "Customer" Multiplicity= "1" /> <End Type= "Orders" Multiplicity= "*" > <OnDelete Action= "Cascade" /> </End> </Association>

    Interrogation des données

    Entité SQL

    ADO.NET Entity Framework utilise une variante du langage SQL (Structured Query Language ) , appelée Entity SQL , qui permet d'écrire des requêtes déclaratives et d'effectuer des mises à jour sur les entités et leurs relations, au niveau conceptuel. Elle diffère de SQL par l'absence de constructions explicites pour les jointures , car EDM est conçu pour abstraire le partitionnement des données entre les tables.GroupeFonctions canoniques Fonctions agrégéesLanguage Integrated Query ) pour interroger des données via le modèle conceptuel Entity Framework. Les développeurs peuvent écrire des requêtes en C# ou Visual Basic à l'aide d'opérateurs LINQ standard tels que Where`SELECT`, Select`INSERT` et ` GroupByUPDATE`, plutôt que d'écrire des instructions SQL spécifiques à la base de données . LINQ to Entities traduit ces requêtes en arbres de commandes Entity Framework, qui sont ensuite convertis en commandes pour le fournisseur de base de données sous-jacent et exécutés sur la source de données. Étant donné que les requêtes doivent être traduites en opérations de base de données, tous les opérateurs et expressions LINQ ne sont pas pris en charge. Plusieurs fournisseurs de bases de données compatibles avec Entity Framework sont disponibles.

    SQL natif

    Dans Entity Framework v4, de nouvelles méthodes ExecuteStoreQuery() et ExecuteStoreCommand() ont été ajoutées à la classe ObjectContext.

    Plus d articles de Worldlex Wiki

    Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

    Explorer l index