Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Gewusst wie: Hinzufügen eines Objekts als Projektdatenquelle (Entity Framework)

Sie können Datenquellen erstellen, die auf den Objekten einer Visual Studio-Anwendung basieren. Nachdem Sie einen Entitätstyp als eine Datenquelle in einem Projekt definiert haben, können Sie Formulare erstellen, die Entitätsdaten anzeigen, indem Sie Elemente aus dem Fenster Datenquellen auf die Formulare ziehen. Diese Elemente werden zu Steuerelementen auf dem Formular, das an die Datenquelle gebunden ist. Weitere Informationen finden Sie unter Binden von Objekten an Steuerelemente (Entity Framework).

In diesem Thema erstellen Sie eine Datenquelle für den SalesOrderHeader-Typ im AdventureWorks Sales-Modell. Mit dieser Datenquelle erstellen Sie dann ein Windows-Formular mit Steuerelementen, die an die Entitätsdaten gebunden sind. Um diese Verfahren durchführen zu können, müssen Sie dem Projekt bereits das "AdventureWorks Sales"-Modell hinzugefügt und das Projekt zur Verwendung von Entity Framework konfiguriert haben. Führen Sie dazu die Verfahren unter Gewusst wie: Verwenden des Entity Data Model-Assistenten (Entity Framework) aus.

So erstellen Sie eine Datenquelle, die auf den SalesOrderHeader-Typen basiert

  1. Wenn Sie vor kurzem das Entity Data Model (EDM) hinzugefügt haben, erstellen Sie das Projekt.

  2. Klicken Sie im Menü Daten auf Neue Datenquelle hinzufügen.

  3. Wählen Sie auf der Seite Datenquellentyp auswählen die Option Objekt aus.

  4. Erweitern Sie auf der Seite Objekt auswählen, an das Bindung hergestellt werden soll den Projektknoten, erweitern Sie den Namespaceknoten des Projekts, und wählen Sie in der Strukturansicht den SalesOrderHeader-Typ aus.

  5. Klicken Sie auf Fertig stellen.

    Die SalesOrderHeader-Datenquelle wird dem Fenster Datenquellen hinzugefügt.

So fügen Sie datenquellengebundene Steuerelemente einem Windows-Formular hinzu

  1. Erweitern Sie im Fenster Datenquellen den Knoten SalesOrderHeader.

  2. Ziehen Sie eine oder mehrere Eigenschaften aus dem SalesOrderHeader-Knoten auf das Formular.

    Dadurch werden die Steuerelemente salesOrderHeaderBindingSource und salesOrderHeaderBindingNavigator auf dem Formular erstellt. Es wird auch ein datengebundenes Steuerelement für jede Eigenschaft mit einem entsprechend bezeichneten Label-Steuerelement auf dem Formular erstellt.

  3. Ziehen Sie die SalesOrderDetail-Navigationseigenschaft auf das Formular.

  4. Hirdurch wird das salesOrderDetailBindingSource-Steuerelement mit der DataSource-Eigenschaft salesOrderHeaderBindingSource und der DataMember-Eigenschaft SalesOrderDetail erstellt. Es wird auch das datengebundene salesOrderDetailDataGridView-Steuerelement mit einem entsprechend bezeichneten Label-Steuerelement auf dem Formular erstellt.

So binden Sie die Datenquelle an das Ergebnis einer Objektabfrage

  1. Öffnen Sie die Codepage für das Formular, und fügen Sie die folgenden using-Anweisungen (Imports in Visual Basic) hinzu:

    using System.Data.Objects;
    
    
  2. Fügen Sie in der partiellen Klasse, die das Formular definiert, den folgenden Code hinzu, mit dem eine ObjectContext-Instanz erstellt wird und die customerID-Konstante definiert wird.

    private AdventureWorksEntities context;
    private const int customerId = 277;
    
    
  3. Doppelklicken Sie im Formular-Designer auf das Formular.

    Dadurch wird die Codeseite für das Formular geöffnet und die Methode erstellt, die das Load-Ereignis für das Formular behandelt.

  4. Kopieren Sie den folgenden Code und fügen Sie ihn in den Load-Ereignishandler ein.

    // Initialize the object context.
    context = new AdventureWorksEntities();
    
    try
    {
        // Create a query for orders and related items.
        var orderQuery = context.SalesOrderHeaders
            .Where("it.CustomerID = @customerId",
            new ObjectParameter("customerId", customerId))
            .Include("SalesOrderDetails");
    
        // 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);
    }
    
    

    Dieser Code führt eine Abfrage aus, die eine Auflistung von SalesOrderHeader und verknüpfte SalesOrderDetail-Objekte für einen bestimmten Kunden zurückgibt und diese Auflistung von SalesOrderHeader-Objekten an salesOrderHeaderBindingSource bindet.

Siehe auch

Anzeigen: