Vue d'ensemble d'Entity Framework

Entity Framework est un ensemble de technologies dans ADO.NET qui prennent en charge le développement d'applications logicielles orientées données. Les architectes et les développeurs d'applications orientées données sont confrontés à la nécessité d'atteindre deux objectifs très différents. Ils doivent modeler les entités, les relations et la logique des problèmes liés à l'activité de l'entreprise qu'ils résolvent, et ils doivent également travailler avec les moteurs de données utilisés pour stocker et récupérer les données. Les données peuvent être réparties entre plusieurs systèmes de stockage, chacun ayant ses propres protocoles ; même les applications qui fonctionnent avec un seul système de stockage doivent équilibrer les besoins du système de stockage par rapport aux besoins en matière d'écriture d'un code d'application efficace et facile à gérer.

Entity Framework permet aux développeurs de travailler avec des données sous la forme de propriétés et d'objets spécifiques aux domaines, tels que des clients et des adresses de clients, sans qu'il soit nécessaire de se préoccuper des tables et des colonnes de base de données sous-jacentes dans lesquelles sont stockées ces données. Avec Entity Framework , les développeurs peuvent travailler à un niveau supérieur d'abstraction lorsqu'ils traitent les données, et peuvent créer et maintenir des applications orientées données avec moins de code que dans les applications traditionnelles. Étant donné qu'Entity Framework est un composant du .NET Framework, les applications Entity Framework peuvent s'exécuter sur tout ordinateur sur lequel .NET Framework 3.5 SP1 (ou une version ultérieure) est installé.

Les sections suivantes de cette rubrique fournissent plus de détail sur Entity Framework  :

  • Giving Life to Models

  • Mapping Objects to Data

  • Accessing and Changing Entity Data

  • Data Providers

  • Entity Data Model Tools

  • Learning More

Donner vie à des modèles

La division de l'application ou du service en trois parties (modèle de domaine, modèle logique et modèle physique) constitue une approche de conception commune et utilisé de longue date pour la construction d'une application ou d'un service. Le modèle de domaine définit les entités et les relations dans le système qui est en cours de modélisation. Le modèle logique d'une base de données relationnelle normalise les entités et les relations dans des tables avec des contraintes de clé étrangère. Le modèle physique s'occupe des fonctionnalités d'un moteur de données particulier en spécifiant des détails de stockage tels que le partitionnement et l'indexation.

Le modèle physique est perfectionné par les administrateurs de bases de données pour améliorer les performances, mais les programmeurs qui écrivent du code d'application limitent principalement leur utilisation du modèle logique à l'écriture de requêtes SQL et à l'appel de procédures stockées. Les modèles de domaine sont généralement utilisés comme un outil permettant de capturer et de communiquer les besoins d'une application, fréquemment sous la forme de diagrammes inertes qui sont consultés et passés en revue dans les phases préliminaires d'un projet, puis abandonnés. De nombreuses équipes de développement ne créent pas de modèle conceptuel et commencent en spécifiant des tables, des colonnes et des clés dans une base de données relationnelle.

Entity Framework donne vie aux modèles conceptuels en permettant aux développeurs d'interroger des entités et des relations dans le modèle de domaine (appelé modèle conceptuel dans Entity Framework ) tout en s'appuyant sur Entity Framework pour traduire ces opérations en commandes spécifiques à la source de données. Cela libère les applications des dépendances codées en dur sur une source de données particulière. Le modèle conceptuel, le modèle de stockage et les mappages entre les deux sont exprimés dans les schémas basés sur XML et sont définis dans les fichiers qui ont les extensions de nom correspondantes :

  • Le langage CSDL (Conceptual Schema Definition Language) définit le modèle conceptuel. Le langage CSDL correspond à l'implémentation Entity Framework du modèle Entity Data Model. L'extension de fichier est .csdl.

  • Le langage SSDL (Store Schema Definition Language) définit le modèle de stockage, également appelé « modèle logique ». L'extension de fichier est .ssdl.

  • Le langage MSL (Mapping Specification Language) définit les mappages entre le modèle de stockage et le modèle conceptuel. L'extension de fichier est .msl.

Le modèle de stockage et les mappages peuvent être modifiés le cas échéant, sans besoin de modifier le modèle conceptuel, les classes de données ou le code d'application. Étant donné que les modèles de stockage sont spécifiques au fournisseur, vous pouvez travailler avec un modèle conceptuel cohérent entre différentes sources de données.

Entity Framework utilise ces fichiers de modèle et de mappage pour transformer des opérations de création, de lecture, de mise à jour et de suppression sur des entités et des relations dans le modèle conceptuel en opérations équivalentes dans la source de données. Entity Framework prend même en charge le mappage d'entités du modèle conceptuel à des procédures stockées de la source de données. Pour plus d'informations, voir Spécifications CSDL, SSDL et MSL.

Mappage d'objets à des données

La programmation orientée objet présente une difficulté pour l'interaction avec les systèmes de stockage des données. Bien que l'organisation des classes reflète souvent l'organisation des tables de bases de données relationnelles, l'adéquation n'est pas parfaite. Plusieurs tables normalisées correspondent fréquemment à une seule classe, et les relations entre les classes sont souvent représentées différemment des relations entre les tables. Par exemple, pour représenter le client d'une commande, une classe Order peut utiliser une propriété qui contient une référence à une instance d'une classe Customer, tandis qu'une ligne de la table Order d'une base de données contient une colonne (ou un ensemble de colonnes) de clé étrangère avec une valeur qui correspond à une valeur de clé primaire dans la table Customer. Une classe Customer peut avoir une propriété nommée Orders qui contient une collection d'instances de la classe Order alors que la table Customer d'une base de données n'a aucune colonne comparable. Entity Framework donne aux développeurs la flexibilité de représenter les relations de cette façon, ou de modeler de façon plus précise les relations lorsqu'elles sont représentées dans la base de données. Pour plus d'informations, consultez Définition et gestion des relations (Entity Framework).

Les solutions existantes ont essayé de rétablir la continuité de ce qu'on appelle fréquemment « défaut d'adaptation d'impédance », en mappant uniquement des classes et des propriétés orientées objet à des colonnes et à des tables relationnelles. Au lieu d'adopter cette approche traditionnelle, Entity Framework mappe des tables relationnelles, des colonnes et des contraintes de clé étrangère dans des modèles logiques à des entités et des relations dans des modèles conceptuels. Cela permet une plus grande souplesse dans la définition des objets et l'optimisation du modèle logique. Les outils Entity Data Model génèrent des classes de données extensibles en fonction du modèle conceptuel. Ces classes sont des classes partielles qui peuvent être étendues avec des membres supplémentaires ajoutés par le développeur. Par défaut, les classes générées pour un modèle conceptuel particulier dérivent de classes de base qui fournissent des services de matérialisation d'entités sous forme d'objets, ainsi que de suivi et d'enregistrement des modifications. Les développeurs peuvent utiliser ces classes pour travailler avec les entités et les relations sous forme d'objets liés par des associations. Les développeurs peuvent également personnaliser les classes générées pour un modèle conceptuel. Pour plus d'informations, consultez Utilisation d'objets (Entity Framework) et How to: Customize Object-Layer Code Generation.

Accessibilité et modification des données d'entité

Plus qu'une simple solution de mappage relationnel objet supplémentaire, Entity Framework permet fondamentalement à des applications d'accéder à des données qui sont représentées sous la forme d'entités et de relations dans le modèle conceptuel, et de les modifier. Entity Framework utilise les informations contenues dans le modèle et les fichiers de mappage pour traduire des requêtes d'objet sur des types d'entités qui sont représentés en requêtes spécifiques à la source de données dans le modèle conceptuel. Les résultats des requêtes sont matérialisés en objets gérés par Entity Framework . Entity Framework offre les méthodes suivantes pour interroger un modèle conceptuel et retourner des objets :

  • LINQ to Entities . Fournit la prise en charge de LINQ (Language Integrated Query) pour interroger des types d'entités définis dans un modèle conceptuel. Pour plus d'informations, consultez LINQ to Entities.

  • Entity SQL . Dialecte SQL indépendant du stockage qui fonctionne directement avec les entités dans le modèle conceptuel et qui prend en charge des concepts Entity Data Model . Entity SQL est utilisé à la fois avec les requêtes d'objet et les requêtes exécutées à l'aide du fournisseur EntityClient. Pour plus d'informations, consultez Vue d'ensemble d'Entity SQL.

  • Méthodes du générateur de requêtes. Ces méthodes vous permettent de construire des requêtes Entity SQL à l'aide de méthodes de requête de style LINQ. Pour plus d'informations, consultez Méthodes du Générateur de requêtes (Entity Framework).

Entity Framework inclut le fournisseur de données EntityClient. Ce fournisseur gère les connexions, traduit des requêtes d'entité dans les requêtes spécifiques à la source de données et retourne un lecteur de données que Entity Framework utilise pour matérialiser les données d'entité dans des objets. Lorsque la matérialisation d'objets n'est pas requise, le fournisseur EntityClient peut également être utilisé comme un fournisseur de données ADO.NET standard en permettant aux applications d'exécuter des requêtes Entity SQL et d'utiliser le lecteur de données en lecture seule retournées. Pour plus d'informations, consultez Fournisseur EntityClient pour Entity Framework.

Le diagramme suivant illustre l'architecture Entity Framework pour l'accès aux données :

Diagramme architectural Entity Framework

Les outils Entity Data Model peuvent générer une classe dérivée de ObjectContext qui représente le conteneur d'entités défini dans le modèle conceptuel. Ce contexte de l'objet fournit les fonctionnalités permettant de suivre les modifications, et de gérer les identités, l'accès concurrentiel et les relations. Cette classe expose également une méthode SaveChanges qui écrit les insertions, les mises à jour et des suppressions dans la source de données. Comme les requêtes, ces modifications sont apportées soit par des commandes générées automatiquement par le système, soit par des procédures stockées qui sont spécifiées par le développeur. Pour plus d'informations, consultez Création, ajout, modification et suppression d'objets (Entity Framework).

Fournisseurs de données

Le fournisseur EntityClient étend le modèle de fournisseur ADO.NET en accédant aux données en termes d'entités conceptuelles et de relations. Il exécute des requêtes qui utilisent Entity SQL . Entity SQL fournit le langage de requête sous-jacent qui permet à EntityClient de communiquer avec la base de données. Pour plus d'informations, consultez Fournisseur EntityClient pour Entity Framework.

Entity Framework inclut un fournisseur de données SqlClient mis à jour qui prend en charge les arborescences de commandes canoniques. Pour plus d'informations, consultez Fournisseur de données .NET Framework pour SQL Server (SqlClient) pour Entity Framework.

Outils de modèle de données d'entité

En plus du runtime Entity Framework , .NET Framework 4 inclut l'outil EDM Generator (EdmGen.exe). Cet utilitaire d'invite de commandes se connecte à une source de données et génère un modèle et des fichiers de mappage basés sur un mappage un-à-un entre des entités et des tables. Il utilise également un fichier de modèle conceptuel (.csdl) pour générer un fichier de couche objet qui contient des classes représentant les types d'entités et l'objet ObjectContext. Pour plus d'informations, consultez EDM Generator (EdmGen.exe).

Visual Studio 2010 inclut la prise en charge d'un outil évolué qui permet de générer un modèle et des fichiers de mappage et d'en effectuer la maintenance dans une application Visual Studio. Entity Data Model  Designer prend en charge la création de scénarios de mappage avancés, tels que l'héritage TPT (table par type) et TPH (table par hiérarchie), et fractionne les entités qui mappent à plusieurs tables. Pour plus d'informations, voir ADO.NET Entity Data Model Designer.

En savoir plus

Les rubriques suivantes vous permettent den savoir plus sur Entity Framework  :

  • Terminologie Entity Framework
    Définit un grand nombre des termes introduits par Entity Data Model et Entity Framework et qui sont utilisés dans la documentation Entity Framework .
  • Ressources Entity Framework
    Fournit des liens vers des rubriques conceptuelles et des liens vers des rubriques et des ressources externes permettant de générer des applications Entity Framework .

Voir aussi

Concepts

ADO.NET Entity Framework