Procédure : ajouter un objet en tant que source de données de projet (Entity Framework)

Vous pouvez créer des sources de données basées sur vos objets dans une application Visual Studio. Après avoir défini un type d'entité en tant que source de données dans un projet, vous pouvez créer des formulaires qui affichent des données EDM (Entity Data Model) en faisant glisser des éléments de la fenêtre Sources de données vers des formulaires. Ces éléments deviennent dans le formulaire des contrôles liés à la source de données. Pour plus d'informations, voir Liaison d'objets à des contrôles (Entity Framework).

Dans cette rubrique, vous allez créer une source de données pour le type SalesOrderHeader du modèle de vente Adventure Works Sales Model. Vous utiliserez ensuite cette source de données pour créer un Windows Form avec des contrôles liés à des données d'entité. Pour effectuer ces procédures, vous devez déjà avoir ajouté le modèle de vente AdventureWorks Sales Model à votre projet et configuré ce dernier pour qu'il utilise Entity Framework. Pour ce faire, exécutez les procédures décrites dans Procédure : utiliser l'Assistant Entity Data Model (Entity Framework).

Pour créer une source de données basée sur les types SalesOrderHeader

  1. Si vous avez récemment ajouté le modèle EDM (Entity Data Model), générez le projet.

  2. Dans le menu Données, cliquez sur Ajouter une nouvelle source de données.

  3. Dans la page Choisir un type de source de données, sélectionnez Objet.

  4. Dans la page Sélectionner l'objet que vous souhaitez lier, développez le nœud du projet et localisez le nœud AdventureWorksModel.

  5. Développez le nœud AdventureWorksModel et sélectionnez le type SalesOrderHeader dans l'arborescence.

  6. Cliquez sur Terminer.

    La source de données SalesOrderHeader est ajoutée à la fenêtre Sources de données.

Pour ajouter à un Windows Form des contrôles liés à une source de données

  1. Dans la fenêtre Sources de données, développez le nœud AdventureWorksModel, puis le nœud SalesOrderHeader.

  2. Faites glisser une ou plusieurs propriétés du nœud SalesOrderHeader vers le formulaire.

    Cette opération crée les contrôles salesOrderHeaderBindingSource et salesOrderHeaderBindingNavigator dans le formulaire. Dans le formulaire sont également créés pour chaque propriété un contrôle lié aux données et son contrôle label avec le titre approprié.

  3. Faites glisser la propriété de navigation SalesOrderDetail vers le formulaire.

  4. Cette opération crée le contrôle salesOrderDetailBindingSource dont la propriété DataSource a la valeur salesOrderHeaderBindingSource et la propriété DataMember la valeur SalesOrderDetail. Elle crée également dans le formulaire le contrôle lié aux données salesOrderDetailDataGridView et son contrôle label avec le titre approprié.

Pour lier la source de données au résultat d'une requête d'objet

  1. Ouvrez la page de codes du formulaire et ajoutez les instructions using (Imports en Visual Basic) suivantes :

    Imports System.Data.Objects
    Imports AdventureWorksModel
    
    using System.Data.Objects;
    using AdventureWorksModel;
    
  2. Dans la classe partielle qui définit le formulaire, ajoutez le code suivant, qui crée une instance d'ObjectContext et définit la constante customerID.

    Dim context As AdventureWorksEntities
    Const customerId As Integer = 277
    
    private AdventureWorksEntities context;
    private const int customerId = 277;
    
  3. Dans le concepteur de formulaires, double-cliquez sur le formulaire.

    La page de codes du formulaire s'ouvre et la méthode qui gère l'événement Load du formulaire est créée.

  4. Dans la méthode de gestionnaire d'événements Load, copiez et collez le code suivant.

    ' Initialize the object context.
    context = New AdventureWorksEntities()
    Try
        ' Create a query for orders and related items.
        Dim orderQuery As ObjectQuery(Of SalesOrderHeader) = _
            context.SalesOrderHeader _
                .Where("it.CustomerID = @customerId", _
                New ObjectParameter("customerId", customerId)) _
                .Include("SalesOrderDetail")
    
        ' Set the data source of the binding source to the ObjectResult 
        ' returned when the query is executed.
        SalesOrderHeaderBindingSource.DataSource = _
            orderQuery.Execute(MergeOption.AppendOnly)
    
    Catch ex As EntitySqlException
        MsgBox(ex.Message)
    End Try
    
    // Initialize the object context.
    context = new AdventureWorksEntities();
    
    try
    {
        // Create a query for orders and related items.
        ObjectQuery<SalesOrderHeader> orderQuery = context.SalesOrderHeader
            .Where("it.CustomerID = @customerId",
            new ObjectParameter("customerId", customerId))
            .Include("SalesOrderDetail");
    
        // Set the data source of the binding source to the ObjectResult 
        // returned when the query is executed.
        salesOrderHeaderBindingSource.DataSource = 
            orderQuery.Execute(MergeOption.AppendOnly);
    }
    catch (EntitySqlException ex)
    {
        MessageBox.Show(ex.Message);
    }
    

    Ce code exécute une requête qui retourne une collection d'objets SalesOrderHeader et SalesOrderDetail connexes pour un client spécifique et lie la collection d'objets SalesOrderHeader au salesOrderHeaderBindingSource.

Voir aussi

Tâches

Procédure : lier des objets à des contrôles Windows Presentation Foundation (Entity Framework)
Procédure : lier des objets à des contrôles Windows Form (Entity Framework)

Concepts

Liaison d'objets à des contrôles (Entity Framework)
Lier des données d'entité à des contrôles (Scénarios d'application)