Présentation d’Entity FrameworkEntity Framework overview

Entity FrameworkEntity Framework est un ensemble de technologies dans ADO.NET qui prennent en charge le développement d'applications logicielles orientées données.The Entity FrameworkEntity Framework is a set of technologies in ADO.NET that support the development of data-oriented software applications. 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.Architects and developers of data-oriented applications have struggled with the need to achieve two very different objectives. 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.They must model the entities, relationships, and logic of the business problems they are solving, and they must also work with the data engines used to store and retrieve the data. 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.The data may span multiple storage systems, each with its own protocols; even applications that work with a single storage system must balance the requirements of the storage system against the requirements of writing efficient and maintainable application code.

Entity FrameworkEntity 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.The Entity FrameworkEntity Framework enables developers to work with data in the form of domain-specific objects and properties, such as customers and customer addresses, without having to concern themselves with the underlying database tables and columns where this data is stored. Avec Entity FrameworkEntity 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.With the Entity FrameworkEntity Framework, developers can work at a higher level of abstraction when they deal with data, and can create and maintain data-oriented applications with less code than in traditional applications. Étant donné que le Entity FrameworkEntity Framework est un composant de la .NET Framework.NET Framework, Entity FrameworkEntity Framework applications peuvent s’exécuter sur n’importe quel ordinateur sur lequel le .NET Framework.NET Framework depuis la version 3.5 SP1 est installé.Because the Entity FrameworkEntity Framework is a component of the .NET Framework.NET Framework, Entity FrameworkEntity Framework applications can run on any computer on which the .NET Framework.NET Framework starting with version 3.5 SP1 is installed.

Donner vie aux modèlesGive life to models

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.A longstanding and common design approach when building an application or service is the division of the application or service into three parts: a domain model, a logical model, and a physical model. Le modèle de domaine définit les entités et les relations dans le système qui est en cours de modélisation.The domain model defines the entities and relationships in the system that is being modeled. 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.The logical model for a relational database normalizes the entities and relationships into tables with foreign key constraints. 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.The physical model addresses the capabilities of a particular data engine by specifying storage details such as partitioning and indexing.

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.The physical model is refined by database administrators to improve performance, but programmers writing application code primarily confine themselves to working with the logical model by writing SQL queries and calling stored procedures. 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.Domain models are generally used as a tool for capturing and communicating the requirements of an application, frequently as inert diagrams that are viewed and discussed in the early stages of a project and then abandoned. 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.Many development teams skip creating a conceptual model and begin by specifying tables, columns, and keys in a relational database.

Le Entity FrameworkEntity Framework donne vie aux modèles en permettant aux développeurs d’interroger des entités et des relations dans le modèle de domaine (appelé un conceptuel modèle dans le Entity FrameworkEntity Framework) tout en s’appuyant sur le Entity FrameworkEntity Framework pour traduire ces opérations de commandes spécifique à la source de données.The Entity FrameworkEntity Framework gives life to models by enabling developers to query entities and relationships in the domain model (called a conceptual model in the Entity FrameworkEntity Framework) while relying on the Entity FrameworkEntity Framework to translate those operations to data source–specific commands. Cela libère les applications des dépendances codées en dur sur une source de données particulière.This frees applications from hard-coded dependencies on a particular data source.

Lorsque vous utilisez Code First, le modèle conceptuel est mappé au modèle de stockage dans le code.When working with Code First, the conceptual model is mapped to the storage model in code. Entity FrameworkEntity Framework peut déduire le modèle conceptuel basé sur les types d'objets et les configurations supplémentaires que vous définissez.The Entity FrameworkEntity Framework can infer the conceptual model based on the object types and additional configurations that you define. Les métadonnées de mappage sont générées au moment de l'exécution selon une combinaison de la manière dont vous avez défini vos types de domaine et données de configuration supplémentaires que vous fournissez dans le code.The mapping metadata is generated during run time based on a combination of how you defined your domain types and additional configuration information that you provide in code. Entity FrameworkEntity Framework génère la base de données nécessaire en fonction des métadonnées. generates the database as needed based on the metadata. Pour plus d’informations, consultez création et mappage d’un modèle conceptuel.For more information, see Creating and Mapping a Conceptual Model.

Lorsque vous utilisez Entity Data Model Tools, 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 :When working with the Entity Data Model Tools, the conceptual model, the storage model, and the mappings between the two are expressed in XML-based schemas and defined in files that have corresponding name extensions:

  • Le langage CSDL (Conceptual Schema Definition Language) définit le modèle conceptuel.Conceptual schema definition language (CSDL) defines the conceptual model. CSDL est la Entity FrameworkEntity Frameworkd’implémentation de la Entity Data Model.CSDL is the Entity FrameworkEntity Framework's implementation of the Entity Data Model. L’extension de fichier est .csdl.The file extension is .csdl.

  • Le langage SSDL (Store Schema Definition Language) définit le modèle de stockage, également appelé « modèle logique ».Store schema definition language (SSDL) defines the storage model, which is also called the logical model. L'extension de fichier est .ssdl.The file extension is .ssdl.

  • Le langage MSL (Mapping Specification Language) définit les mappages entre le modèle de stockage et le modèle conceptuel.Mapping specification language (MSL) defines the mappings between the storage and conceptual models. L'extension de fichier est .msl.The file extension is .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.The storage model and mappings can change as needed without requiring changes to the conceptual model, data classes, or application code. É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.Because storage models are provider-specific, you can work with a consistent conceptual model across various data sources.

Le Entity FrameworkEntity Framework utilise ces modéliser et mapper des fichiers pour créer, lire, mettre à jour et supprimer des opérations sur les entités et les relations dans le modèle conceptuel en opérations équivalentes dans la source de données.The Entity FrameworkEntity Framework uses these model and mapping files to create, read, update, and delete operations against entities and relationships in the conceptual model to equivalent operations in the data source. Le Entity FrameworkEntity Framework même prend en charge le mappage d’entités dans le modèle conceptuel aux procédures stockées dans la source de données.The Entity FrameworkEntity Framework even supports mapping entities in the conceptual model to stored procedures in the data source. Pour plus d’informations, consultez CSDL, SSDL et MSL spécifications.For more information, see CSDL, SSDL, and MSL Specifications.

Map (objets) aux donnéesMap objects to data

La programmation orientée objet présente une difficulté pour l'interaction avec les systèmes de stockage des données.Object-oriented programming poses a challenge for interacting with data storage systems. 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.Although the organization of classes frequently mirrors the organization of relational database tables, the fit is not perfect. 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.Multiple normalized tables frequently correspond to a single class, and relationships between classes are often represented differently than relationships between tables are represented. 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.For example, to represent the customer for a sales order, an Order class might use a property that contains a reference to an instance of a Customer class, while an Order table row in a database contains a foreign key column (or set of columns) with a value that corresponds to a primary key value in the Customer table. 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.A Customer class might have a property named Orders that contains a collection of instances of the Order class, while the Customer table in a database has no comparable column. Entity FrameworkEntity 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.The Entity FrameworkEntity Framework provides developers with the flexibility to represent relationships in this way, or to more closely model relationships as they are represented in the database.

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.Existing solutions have tried to bridge this gap, which is frequently called an "impedance mismatch", by only mapping object-oriented classes and properties to relational tables and columns. Au lieu d’adopter cette approche traditionnelle, la Entity FrameworkEntity Framework mappe des tables relationnelles, des colonnes et des contraintes de clé étrangère dans des modèles logiques à des entités et relations dans les modèles conceptuels.Instead of taking this traditional approach, the Entity FrameworkEntity Framework maps relational tables, columns, and foreign key constraints in logical models to entities and relationships in conceptual models. Cela permet une plus grande souplesse dans la définition des objets et l'optimisation du modèle logique.This enables greater flexibility both in defining objects and optimizing the logical model. Les outils Entity Data ModelEntity Data Model génèrent des classes de données extensibles en fonction du modèle conceptuel.The Entity Data ModelEntity Data Model tools generate extensible data classes based on the conceptual model. Ces classes sont des classes partielles qui peuvent être étendues avec des membres supplémentaires que le développeur ajoute.These classes are partial classes that can be extended with additional members that the developer adds. 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.By default, the classes that are generated for a particular conceptual model derive from base classes that provide services for materializing entities as objects and for tracking and saving changes. 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.Developers can use these classes to work with the entities and relationships as objects related by associations. Les développeurs peuvent également personnaliser les classes générées pour un modèle conceptuel.Developers can also customize the classes that are generated for a conceptual model. Pour plus d’informations, consultez utilisation d’objets.For more information, see Working with Objects.

Données d’entité accès et les modificationsAccess and change entity data

Plus qu'une simple solution de mappage relationnel objet supplémentaire, Entity FrameworkEntity 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.More than just another object-relational mapping solution, the Entity FrameworkEntity Framework is fundamentally about enabling applications to access and change data that is represented as entities and relationships in the conceptual model. Entity FrameworkEntity 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.The Entity FrameworkEntity Framework uses information in the model and mapping files to translate object queries against entity types represented in the conceptual model into data source-specific queries. Résultats des requêtes sont matérialisés en objets que le Entity FrameworkEntity Framework gère.Query results are materialized into objects that the Entity FrameworkEntity Framework manages. Le Entity FrameworkEntity Framework fournit les méthodes suivantes pour interroger un modèle conceptuel et retourner des objets :The Entity FrameworkEntity Framework provides the following ways to query a conceptual model and return objects:

  • LINQ to EntitiesLINQ to Entities.. Fournit la prise en charge Language-Integrated Query (LINQ) pour interroger des types d’entité qui sont définis dans un modèle conceptuel.Provides Language-Integrated Query (LINQ) support for querying entity types that are defined in a conceptual model. Pour plus d’informations, consultez LINQ to Entities.For more information, see LINQ to Entities.

  • Entity SQLEntity SQL.. Un dialecte indépendant du stockage de SQL qui fonctionne directement avec les entités dans le modèle conceptuel et qui prend en charge Entity Data ModelEntity Data Model concepts.A storage-independent dialect of SQL that works directly with entities in the conceptual model and that supports Entity Data ModelEntity Data Model concepts. Entity SQLEntity SQL est utilisé avec les requêtes d’objet et les requêtes sont exécutées à l’aide du fournisseur EntityClient. is used both with object queries and queries that are executed by using the EntityClient provider. Pour plus d’informations, consultez Entity SQL Overview.For more information, see Entity SQL Overview.

Entity FrameworkEntity Framework inclut le fournisseur de données EntityClient.The Entity FrameworkEntity Framework includes the EntityClient data provider. 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 FrameworkEntity Framework utilise pour matérialiser les données d'entité dans des objets.This provider manages connections, translates entity queries into data source-specific queries, and returns a data reader that the Entity FrameworkEntity Framework uses to materialize entity data into objects. Lors de la matérialisation d’objets n’est pas obligatoire, le fournisseur EntityClient peut également servir comme une norme ADO.NETADO.NET fournisseur de données en permettant aux applications d’exécuter Entity SQLEntity SQL interroge et utiliser le lecteur de données en lecture seule retournées.When object materialization is not required, the EntityClient provider can also be used like a standard ADO.NETADO.NET data provider by enabling applications to execute Entity SQLEntity SQL queries and consume the returned read-only data reader. Pour plus d’informations, consultez fournisseur EntityClient pour Entity Framework.For more information, see EntityClient Provider for the Entity Framework.

Le diagramme suivant illustre l'architecture Entity FrameworkEntity Framework pour l'accès aux données :The following diagram illustrates the Entity FrameworkEntity Framework architecture for accessing data:

Diagramme Architectural de Entity FrameworkEntity Framework Architectural Diagram

Les outils Entity Data ModelEntity Data Model peuvent générer une classe dérivée de System.Data.Objects.ObjectContext ou System.Data.Entity.DbContext qui représente le conteneur d'entités défini dans le modèle conceptuel.The Entity Data ModelEntity Data Model Tools can generate a class derived from System.Data.Objects.ObjectContext or System.Data.Entity.DbContext that represents the entity container in the conceptual model. 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.This object context provides the facilities for tracking changes and managing identities, concurrency, and relationships. Cette classe expose également une méthode SaveChanges qui écrit les insertions, les mises à jour et des suppressions dans la source de données.This class also exposes a SaveChanges method that writes inserts, updates, and deletes to the data source. 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.Like queries, these changes are either made by commands automatically generated by the system or by stored procedures that are specified by the developer.

Fournisseurs de donnéesData providers

Le fournisseur EntityClient étend le modèle de fournisseur ADO.NETADO.NET en accédant aux données en termes d'entités conceptuelles et de relations.The EntityClient provider extends the ADO.NETADO.NET provider model by accessing data in terms of conceptual entities and relationships. Il exécute des requêtes qui utilisent Entity SQLEntity SQL.It executes queries that use Entity SQLEntity SQL. Entity SQLEntity SQL fournit le langage de requête sous-jacent qui permet à EntityClient de communiquer avec la base de données. provides the underlying query language that enables EntityClient to communicate with the database. Pour plus d’informations, consultez fournisseur EntityClient pour Entity Framework.For more information, see EntityClient Provider for the Entity Framework.

Entity FrameworkEntity Framework inclut un fournisseur de données SqlClient mis à jour qui prend en charge les arborescences de commandes canoniques.The Entity FrameworkEntity Framework includes an updated SqlClient Data Provider that supports canonical command trees. Pour plus d’informations, consultez SqlClient pour Entity Framework.For more information, see SqlClient for the Entity Framework.

Outils Entity data modelEntity data model tools

Avec le Entity FrameworkEntity Framework runtime, Visual Studio inclut le mappage et les outils de modélisation.Together with the Entity FrameworkEntity Framework runtime, Visual Studio includes the mapping and modeling tools. Pour plus d’informations, consultez de modélisation et mappage.For more information, see Modeling and Mapping.

En savoir plusLearn more

Pour en savoir plus sur la Entity FrameworkEntity Framework, consultez :To learn more about the Entity FrameworkEntity Framework, see:

Mise en route - fournit des informations sur comment être opérationnel et en cours d’exécution rapidement à l’aide de la Quickstart, qui montre comment créer un simple Entity FrameworkEntity Framework application.Getting Started - Provides information about how to get up and running quickly using the Quickstart, which shows how to create a simple Entity FrameworkEntity Framework application.

Terminologie Entity Framework -définit un grand nombre des termes introduits par Entity Data Model et Entity FrameworkEntity Framework et qui sont utilisés dans Entity FrameworkEntity Framework documentation.Entity Framework Terminology - Defines many of the terms that are introduced by the Entity Data Model and the Entity FrameworkEntity Framework and that are used in Entity FrameworkEntity Framework documentation.

Ressources Entity Framework - fournit des liens vers des rubriques conceptuelles et des liens vers les rubriques externes et des ressources pour la création de Entity FrameworkEntity Framework applications.Entity Framework Resources - Provides links to conceptual topics and links to external topics and resources for building Entity FrameworkEntity Framework applications.

Voir aussiSee also