Freigeben über


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 Entity Data Model (EDM)-Daten 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 Assistenten für Entity Data Model (Entity Framework) aus.

So erstellen Sie eine Datenquelle auf Grundlage der SalesOrderHeader-Typen

  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, und suchen Sie den AdventureWorksModel-Knoten.

  5. Erweitern Sie den AdventureWorksModel-Knoten, und wählen Sie den SalesOrderHeader-Typ in der Strukturansicht aus.

  6. 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 AdventureWorksModel, und erweitern Sie dann den Knoten SalesOrderHeader.

  2. Ziehen Sie eine oder mehrere Eigenschaften vom 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:

    Imports System.Data.Objects
    Imports AdventureWorksModel
    
    using System.Data.Objects;
    using AdventureWorksModel;
    
  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.

    Dim context As AdventureWorksEntities
    Const customerId As Integer = 277
    
    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.
        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);
    }
    

    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

Aufgaben

Gewusst wie: Binden von Objekten an Windows Presentation Foundation-Steuerelemente (Entity Framework)
Gewusst wie: Binden von Objekten an Windows Form-Steuerelemente (Entity Framework)

Konzepte

Binden von Objekten an Steuerelemente (Entity Framework)
Binden von Entitätsdaten an Steuerelemente (Anwendungsszenarien)