Utilisation d'objets (Entity Framework)

Entity Framework vous permet d'interroger, insérer, mettre à jour et supprimer des données exprimées sous forme d'objets CLR (common language runtime) typés qui correspondent à des instances de types d'entité. Les types d'entité représentent les entités définies dans le modèle conceptuel. Entity Framework mappe les entités et les relations définies dans un modèle conceptuel à une source de données. Entity Framework fournit la logistique pour effectuer les opérations suivantes : matérialiser les données retournées de la source de données sous forme d'objets ; suivre les modifications apportées aux objets ; gérer l'accès concurrentiel ; répercuter les modifications apportées aux objets dans la source de données ; et lier des objets à des contrôles. Vous pouvez utiliser LINQ to Entities, Langage Entity SQL ou des Méthodes du Générateur de requêtes (Entity Framework) pour exécuter des requêtes par rapport au modèle conceptuel. Pour plus d'informations, consultez Interrogation d'un modèle conceptuel (Entity Framework).

La classe ObjectContext est la classe principale d'interaction avec des objets entité. Une instance de la classe ObjectContext encapsule les éléments suivants : connexion à la base de données ; métadonnées qui décrivent le modèle ; et objet ObjectStateManager qui suit les objets pendant les opérations de création, mise à jour et suppression. Pour plus d'informations, consultez Résolution d'identité, gestion des états et suivi des modifications (Entity Framework).

Entity Framework fournit des outils qui génèrent automatiquement une couche objet basée sur le modèle conceptuel. La couche objet inclut des types d'entité et des définitions de contexte de l'objet. La définition de contexte de l'objet contient une classe dérivée ObjectContext qui possède généralement un jeu de propriétés qui retournent une collection d'entités du type spécifié. Pour générer le code de couche objet, utilisez Entity Data Model Designer (Concepteur d'entités) ou l'outil en ligne de commande EdmGen.exe. Pour plus d'informations, consultez Generated Code Overview.

Types d'entité

Dans Entity Framework , vous pouvez utiliser des types d'entité dérivés de EntityObject, des types d'objets CLR « classiques » (POCO), des types de proxy POCO et des types d'entité de suivi automatique. Les sections suivantes fournissent des informations pour vous aider à choisir l'option la plus appropriée, en fonction de la nature de votre application.

EntityObject

Par défaut, les outils ADO.NETEntity Data Model génèrent EntityObject des types d'entité dérivés. Lorsque vous travaillez avec les types dérivés EntityObject, le contexte de l'objet gère les relations entre vos objets, suit les modifications à mesure qu'elles sont apportées et prend en charge le chargement différé de manière très efficace. Toutefois, les types dérivés EntityObject sont fortement dépendants d'Entity Framework . Si vous travaillez avec des architectures qui requièrent l'ignorance de la persistance (par exemple, le développement axé sur des tests ou axé sur un domaine) ou si vous avez des classes de domaine existantes, envisagez d'utiliser des POCO ou des proxys POCO.

POCO

Entity Framework vous permet d'utiliser des objets de domaine existants avec le modèle de données sans avoir à modifier les classes de données. Ces classes de données POCO (également appelées objets qui ignorent la persistance) prennent en charge la plupart des comportements de requête, d'insertion, de mise à jour et de suppression des types d'entité générés par les outils Entity Data Model .

Lorsque vous utilisez des types POCO, les modifications apportées au graphique d'objet ne sont pas suivies automatiquement par Entity Framework à mesure qu'elles se produisent. Entity Framework utilise le mécanisme d'instantané pour détecter les modifications apportées aux objets. Appelez DetectChanges pour synchroniser le contexte de l'objet avec votre graphique. Par défaut, le contexte de l'objet appelle cette méthode avant d'enregistrer les données sur la source de données. Ce mécanisme utilise plus de mémoire que celui de la notification instantanée et risque d'affecter vos performances, surtout si l'application requiert de fréquentes modifications de la détection. Pour plus d'informations, consultez Suivi des modifications dans les entités POCO (Entity Framework). Pour une prise en charge de la notification instantanée, activez la création d'objets proxy de suivi des modifications.

Si vous souhaitez bénéficier du chargement différé, vous devez activer la création d'un proxy de chargement différé. Pour plus d'informations, consultez la section Proxy POCO ci-dessous.

Proxy POCO

Utilisez des proxys POCO si vous souhaitez un suivi des modifications et un chargement différé très efficaces et immédiats. Lorsque vous utilisez des proxys, vous disposez des mêmes fonctionnalités que les types dérivés EntityObject, mais vos classes de domaine restent séparées d'Entity Framework . Pour activer un proxy de chargement différé et/ou la création d'un proxy de suivi des modifications instantané, vos classes POCO doivent satisfaire les spécifications décrites dans la rubrique Spécifications pour la création de proxys POCO (Entity Framework).

Les proxys sont créés pendant l'exécution et héritent de types POCO. Cela signifie que le type de vos entités au moment de l'exécution est différent du type POCO. Cela rend la sérialisation plus complexe. Pour plus d'informations, consultez Utilisation d'entités POCO (Entity Framework). Notez que la création de types de proxy représente une charge mémoire supplémentaire par rapport aux types POCO.

Entités de suivi automatique

Les types EntityObject dérivés, les types POCO et types de proxy POCO fonctionnent bien dans les applications où les objets entité peuvent être attachés au contexte de l'objet qui gère le suivi des modifications. Toutefois, lorsque vous devez transférer des graphiques d'entités complets dans une couche où le contexte de l'objet n'est pas disponible, vous devez indiquer comment le suivi des modifications sera effectué et comment ces modifications seront signalées au contexte de l'objet. À partir de la version 4 du .NET Framework, les entités de suivi automatique peuvent enregistrer les modifications apportées aux propriétés scalaires, complexes et de navigation. Les entités de suivi automatique ne dépendent pas d'Entity Framework . Le modèle Générateur d'entité de suivi automatique ADO.NET génère des entités de suivi automatique. Pour plus d'informations, consultez Utilisation des entités de suivi automatique.

Considérations sur les performances

Les considérations sur les performances suivantes peuvent également contribuer au choix des types d'objets les mieux adaptés à votre application.

  • Lors du chargement des métadonnées, la découverte des types POCO ou des types de proxy engendre un coût supérieur à celui de la découverte des types dérivés EntityObject attribués.

  • Générer des types de proxy POCO dynamiques implique une certaine charge mémoire.

  • L'initialisation de types POCO est celle qui implique le moins de charge mémoire par rapport aux types de proxy et aux types EntityObject dérivés.

  • Le suivi d'instantané de POCO est plus coûteux que le suivi de notification instantanée.

Dans cette section

Objets de type complexe (Entity Framework)

Définition et gestion des relations (Entity Framework)

Création, ajout, modification et suppression d'objets (Entity Framework)

Attachement et détachement d'objets (Entity Framework)

Résolution d'identité, gestion des états et suivi des modifications (Entity Framework)

Gestion des connexions et des transactions (Entity Framework)

Enregistrement des modifications et gestion de l'accès concurrentiel (Entity Framework)

Liaison d'objets à des contrôles (Entity Framework)

Utilisation des clés d'entité (Entity Framework)

Sérialisation d'objets (Entity Framework)

Utilisation d'ObjectSet (Entity Framework)

Personnalisation des objets (Entity Framework)

Voir aussi

Concepts

Interrogation d'un modèle conceptuel (Entity Framework)
Démarrage rapide (Entity Framework)