Partager via


Utilisation des données d'entité

Entity Framework compile les métadonnées du modèle conceptuel et du modèle de stockage et les mappages entre les modèles, dans des paires bidirectionnelles d'instructions Entity SQL appelées vues clientes. Ces vues dirigent le traitement des requêtes et des mises à jour dans le moteur d'exécution. Le compilateur de mappage qui génère les vues peut être appelé soit au moment de la conception, soit pendant l'exécution lorsque la première requête est exécutée par rapport à un modèle conceptuel.

Entity Framework s'appuie sur des données ADO.NET spécifiques au stockage en fournissant un objet EntityConnection à un fournisseur de données et à une source de données.

Lorsqu'une requête est exécutée, elle est analysée et convertie en arborescence de commandes canonique, qui est une représentation du modèle objet de la requête. Les arborescences de commandes canoniques représentent les commandes de sélection, de mise à jour, d'insertion et de suppression. Tous les traitements suivants sont effectués sur l'arborescence de commandes, qui représente le moyen de communication entre le fournisseur System.Data.EntityClient et le fournisseur de données .NET Framework sous-jacent, tel que System.Data.SqlClient.

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

Diagramme architectural Entity Framework

Interrogation d'objets

ADO.NET Entity Data Model Tools génèrent une classe dérivée de ObjectContext qui représente le conteneur d'identités défini dans le modèle conceptuel. La classe ObjectContext prend en charge les requêtes sur un modèle conceptuel qui retournent les entités sous forme d'objets et créent, mettent à jour et suppriment des objets entité. Entity Framework prend en charge des requêtes d'objet sur un modèle conceptuel. Les requêtes peuvent être composées à l'aide d'Entity SQL , de LINQ (Language Integrated Query) et des méthodes du générateur de requêtes d'objet.

Dans un modèle conceptuel, les entités sont liées les unes aux autres par des associations. Dans la couche objet, ces associations sont représentées par des propriétés qui exposent des collections d'objets connexes selon une référence d'entité. Par exemple, dans le modèle School, Department.Course obtient une collection d'entités constituée d'objets Course reposant sur l'association entre Course et Department. Si la propriété LazyLoadingEnabled sur la classe ObjectContext est définie sur false, les objets référencés ne sont pas automatiquement chargés et vous devez appeler la méthode Load sur la référence d'identité pour charger les données de l'objet connexe dans le contexte de l'objet.

Bb399760.note(fr-fr,VS.100).gifRemarque :
Si vous avez utilisé Entity Data Model Designer pour générer le code de couche objet, la propriété LazyLoadingEnabled sur la classe ObjectContext est définie sur true par défaut.

Vous pouvez également spécifier un chemin d'accès de requête qui définit les objets connexes à charger avec les objets retournés. Pour plus d'informations, voir Interrogation d'un modèle conceptuel (Entity Framework).

L'exemple suivant tiré du Démarrage rapide présente une requête qui, lorsqu'elle est exécutée, extrait tous les objets Department. La définition d'un chemin d'accès de requête est la garantie que les objets Course associés aux objets Department sont également retournés. Une clause Entity SQL ORDER BY trie les objets retournés par Name.

' Define a query that returns all Department objects
' and related Course objects, ordered by name.
Dim departmentQuery As ObjectQuery(Of Department) = _
    From d In schoolContext.Departments.Include("Courses") _
    Order By d.Name _
    Select d
// Define a query that returns all Department  
// objects and course objects, ordered by name.
var departmentQuery = from d in schoolContext.Departments.Include("Courses")
                      orderby d.Name
                      select d;

Pour plus d'informations, consultez Interrogation d'un modèle conceptuel (Entity Framework).

Vous pouvez définir un jeu de modèles qui utilise des procédures stockées pour exécuter les requêtes sur la source de données. Les ensembles de résultats issus de ces procédures stockées sont mappés aux entités du modèle conceptuel. Pour plus d'informations, voir How to: Import a Stored Procedure.

Utilisation d'objets

Dans un contexte d'objet, un objet est la représentation sous forme de type d'entité des données de la source de données. Vous pouvez modifier, créer et supprimer des objets dans un contexte d'objet. Le contexte d'objet gère les identités et les relations entre les objets. Vous pouvez également sérialiser les objets et les lier à des contrôles. Pour plus d'informations, voir Utilisation d'objets (Entity Framework).

L'exemple suivant tiré du Démarrage rapide obtient une collection d'objets Course associés à un objet Department et lie la collection à un contrôle DataGridView.

' Get the object for the selected department.
Dim department As Department = _
    CType(Me.departmentList.SelectedItem, Department)

' Bind the grid view to the collection of Course objects 
' that are related to the selected Department object.
courseGridView.DataSource = department.Courses
//Get the object for the selected department.
Department department = (Department)this.departmentList.SelectedItem;

//Bind the grid view to the collection of Course objects
// that are related to the selected Department object.
courseGridView.DataSource = department.Courses;

Entity Framework assure le suivi des modifications apportées aux données d'entité et permet de les répercuter dans la source de données. Dans l'exemple suivant tiré du Démarrage rapide, les modifications apportées au contexte d'objet sont écrites dans la base de données.

' Save object changes to the database, 
' display a message, and refresh the form.
schoolContext.SaveChanges()

Pour plus d'informations, consultez Création, ajout, modification et suppression d'objets (Entity Framework).

Vous pouvez définir un modèle conceptuel qui utilise des procédures stockées pour insérer, mettre à jour et supprimer des données dans la source de données. Ces procédures stockées sont mappées aux entités du modèle conceptuel. Pour plus d'informations, voir Walkthrough: Mapping an Entity to Stored Procedures.

Voir aussi

Concepts

Utilisation d'objets (Entity Framework)
Requêtes dans LINQ to Entities