Partager via


Exécution de requêtes sur des entités et des associations (Démarrage rapide d'Entity Framework)

Dans cette tâche, vous aller créer des requêtes fortement typées sur les objets CLR qui représentent des entités et associations du modèle School, puis lier des contrôles d'affichage aux collections d'objets retournées à partir de ces requêtes.

Pour interroger la base de données School à propos des départements

  1. Au début du fichier de code du formulaire CourseViewer, ajoutez les instructions using (C#) ou Imports (Visual Basic) ci-après pour faire référence au modèle créé à partir de la base de données School et à l'espace de noms de l'entité.

    Imports System.Data.Objects
    Imports System.Data.Objects.DataClasses
    
    using System.Data.Objects;
    using System.Data.Objects.DataClasses;
    
  2. En haut de la définition de classe partielle du formulaire CourseViewer, ajoutez le code ci-après, qui crée une instance d'ObjectContext.

    ' Create an ObjectContext instance based on SchoolEntity.
    Private schoolContext As SchoolEntities
    
    // Create an ObjectContext instance based on SchoolEntity.
    private SchoolEntities schoolContext;
    
  3. Dans le concepteur de formulaires CourseViewer, double-cliquez sur le formulaire CourseViewer.

    La page de codes du formulaire s'ouvre et la méthode de gestionnaire d'événements courseViewer _Load est créée.

  4. Dans la méthode de gestionnaire d'événements courseViewer _Load, copiez et collez le code ci-après, qui définit DataGridView, exécute une requête qui retourne une collection de départements (classés par Name) et lie la collection d'objets Department au contrôle departmentList.

    ' Initialize the ObjectContext.
    schoolContext = New SchoolEntities()
    
    ' Define a query that returns all Department objects and related
    ' Course objects, ordered by name.
    Dim departmentQuery As ObjectQuery(Of Department) = _
        schoolContext.Department.Include("Course").OrderBy("it.Name")
    
    Try
        ' Bind the ComboBox control to the query, which is 
        ' executed during data binding.
        Me.departmentList.DataSource = departmentQuery
        Me.departmentList.DisplayMember = "Name"
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
    
    // Initialize the ObjectContext.
    schoolContext = new SchoolEntities();
    
    // Define a query that returns all Department objects and related
    // Course objects, ordered by name.
    ObjectQuery<Department> departmentQuery =
        schoolContext.Department.Include("Course").OrderBy("it.Name");
    
    try
    {
        // Bind the ComboBox control to the query, which is
        // executed during data binding.
        this.departmentList.DataSource = departmentQuery;
        this.departmentList.DisplayMember = "Name";
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    

Pour afficher les cours pour le département sélectionné

  1. Dans le concepteur de formulaires CourseViewer, double-cliquez sur le contrôle departmentList.

    Cette opération crée la méthode de gestionnaire d'événements departmentList_SelectedIndexChanged.

  2. Collez le code ci-dessous, qui charge les cours liés au département sélectionné.

    Try
        ' 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.Course
        courseGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
    
    try
    {
        // 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.Course;
    
        courseGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    

Étapes suivantes

Vous avez créé des requêtes qui retournent des objets Department et Course et lié ces objets à des contrôles. Vous allez à présent enregistrer dans la base de données les modifications apportées aux objets Course de la grille de données : Insertion et mise à jour de données (Démarrage rapide d'Entity Framework).

Voir aussi

Concepts

Utilisation des données d'entité

Autres ressources

Exemples (Entity Framework)
Object Services (Entity Framework)