Share via


Erstellen der .NET Framework-Clientanwendung (WCF Data Services-Schnellstart)

Dies ist die letzte Aufgabe des WCF Data Services -Schnellstarts. In dieser Aufgabe fügen Sie der Projektmappe eine Konsolenanwendung hinzu, fügen dieser neuen Clientanwendung einen Verweis auf den Open Data Protocol (OData) -Feed hinzu und greifen aus der Clientanwendung mit den generierten Clientdatendienstklassen und Clientbibliotheken auf den OData -Feed zu.

Dd728278.note(de-de,VS.100).gifHinweis:
Eine .NET Framework-basierte Clientanwendung ist für den Zugriff auf einen Datenfeed nicht erforderlich.Auf den Datendienst kann jede Anwendungskomponente zugreifen, die einen OData -Feed nutzt.Weitere Informationen finden Sie unter Verwenden eines Datendiensts in einer Clientanwendung (WCF Data Services).

So erstellen Sie die Clientanwendung mit Visual Studio

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, klicken Sie auf Hinzufügen und dann auf Neues Projekt.

  2. Klicken Sie in Projekttypen auf Windows, und wählen Sie dann im Bereich Vorlagen die Option WPF-Anwendung aus.

  3. Geben Sie NorthwindClient als Projektnamen ein, und klicken Sie dann auf OK.

  4. Öffnen Sie die Datei Window1.xaml, und ersetzen Sie den XAML-Code durch folgenden Code:

        <Window x:Class="MainWindow"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="Northwind Orders" Height="335" Width="425" 
            Name="OrdersWindow" Loaded="Window1_Loaded">
        <Grid Name="orderItemsGrid">
            <ComboBox DisplayMemberPath="OrderID" ItemsSource="{Binding}"
                      IsSynchronizedWithCurrentItem="true" 
                      Height="23" Margin="92,12,198,0" Name="comboBoxOrder" VerticalAlignment="Top"/>
            <DataGrid ItemsSource="{Binding Path=Order_Details}"  
                      CanUserAddRows="False" CanUserDeleteRows="False"  
                      Name="orderItemsDataGrid" Margin="34,46,34,50"
                      AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn  Header="Product" Binding="{Binding ProductID, Mode=OneWay}" />
                    <DataGridTextColumn  Header="Quantity" Binding="{Binding Quantity, Mode=TwoWay}" />
                    <DataGridTextColumn  Header="Price" Binding="{Binding UnitPrice, Mode=TwoWay}" />
                    <DataGridTextColumn  Header="Discount" Binding="{Binding Discount, Mode=TwoWay}" />                
                </DataGrid.Columns>     
            </DataGrid>
            <Label Height="28" Margin="34,12,0,0" Name="orderLabel" VerticalAlignment="Top" 
                   HorizontalAlignment="Left" Width="65">Order:</Label>
            <StackPanel Name="Buttons" Orientation="Horizontal" HorizontalAlignment="Right" 
                        Height="40" Margin="0,257,22,0">
                <Button Height="23" HorizontalAlignment="Right" Margin="0,0,12,12" 
                    Name="buttonSave" VerticalAlignment="Bottom" Width="75" 
                        Click="buttonSaveChanges_Click">Save Changes
                </Button>
                <Button Height="23" Margin="0,0,12,12" 
                    Name="buttonClose" VerticalAlignment="Bottom" Width="75" 
                        Click="buttonClose_Click">Close</Button>
            </StackPanel>
        </Grid>
    </Window>
    

So fügen Sie dem Projekt einen Datendienstverweis hinzu

  1. Klicken Sie mit der rechten Maustaste auf das NorthwindClient-Projekt, klicken Sie auf Dienstverweis hinzufügen und dann auf Ermitteln.

    Dadurch wird der Northwind-Datendienst angezeigt, den Sie in der ersten Aufgabe erstellt haben.

  2. Geben Sie im Textfeld Namespace Northwind ein, und klicken Sie auf OK.

    Dadurch wird dem Projekt, das die zum Zugriff auf und zur Interaktion mit Datendienstressourcen als Objekte verwendeten Datenklassen enthält, eine neue Codedatei hinzugefügt. Die Datenklassen werden im Namespace NorthwindClient.Northwind erstellt.

So greifen Sie auf Datendienstdaten in der WPF-Anwendung zu

  1. Klicken Sie im Projektmappen-Explorer unter NorthwindClient mit der rechten Maustaste auf das Projekt, und klicken Sie dann auf Verweis hinzufügen.

  2. Wählen Sie im Dialogfeld "Verweis hinzufügen" auf der Registerkarte .NET die System.Data.Services.Client.dll-Assembly aus, und klicken Sie anschließend auf OK. Öffnen Sie im Projektmappen-Explorer unter NorthwindClient die Codepage für die Datei Window1.xaml, und fügen Sie die folgende using-Anweisung (Imports in Visual Basic) hinzu.

    Imports System.Data.Services.Client
    Imports NorthwindClient.Northwind
    
    using System.Data.Services.Client;
    using NorthwindClient.Northwind;
    
  3. Fügen Sie den folgenden Code ein, der diesen Datendienst abfragt und das Ergebnis an eine DataServiceCollection in der Window1-Klasse bindet:

    Dd728278.note(de-de,VS.100).gifHinweis:
    Sie müssen den Hostnamen localhost:12345 durch den Server und den Anschluss ersetzen, der die Instanz des Northwind-Datendiensts hostet.

    Private context As NorthwindEntities
    Private customerId As String = "ALFKI"
    
    ' Replace the host server and port number with the values 
    ' for the test server hosting your Northwind data service instance.
    Private svcUri As Uri = New Uri("https://localhost:12345/Northwind.svc")
    
    Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
        Try
            ' Instantiate the DataServiceContext.
            context = New NorthwindEntities(svcUri)
    
            ' Define a LINQ query that returns Orders and 
            ' Order_Details for a specific customer.
            Dim ordersQuery = From o In context.Orders.Expand("Order_Details") _
                                  Where o.Customer.CustomerID = customerId _
                                  Select o
    
            ' Create an DataServiceCollection(Of T) based on
            ' execution of the LINQ query for Orders.
            Dim customerOrders As DataServiceCollection(Of Order) = New  _
                DataServiceCollection(Of Order)(ordersQuery)
    
            ' Make the DataServiceCollection<T> the binding source for the Grid.
            Me.orderItemsGrid.DataContext = customerOrders
        Catch ex As Exception
            MessageBox.Show(ex.ToString())
        End Try
    End Sub
    
    private NorthwindEntities context;
    private string customerId = "ALFKI";
    
    // Replace the host server and port number with the values 
    // for the test server hosting your Northwind data service instance.
    private Uri svcUri = new Uri("https://localhost:12345/Northwind.svc");
    
    private void Window1_Loaded(object sender, RoutedEventArgs e)
    {
        try
        {
            // Instantiate the DataServiceContext.
            context = new NorthwindEntities(svcUri);
    
            // Define a LINQ query that returns Orders and 
            // Order_Details for a specific customer.
            var ordersQuery = from o in context.Orders.Expand("Order_Details")
                              where o.Customer.CustomerID == customerId
                              select o;
    
            // Create an DataServiceCollection<T> based on 
            // execution of the LINQ query for Orders.
            DataServiceCollection<Order> customerOrders = new
                DataServiceCollection<Order>(ordersQuery);
    
            // Make the DataServiceCollection<T> the binding source for the Grid.
            this.orderItemsGrid.DataContext = customerOrders;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
    
  4. Fügen Sie den folgenden Code zum Speichern von Änderungen in die Window1-Klasse hinzu:

    Private Sub buttonSaveChanges_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
        Try
            ' Save changes made to objects tracked by the context.
            context.SaveChanges()
        Catch ex As DataServiceRequestException
            MessageBox.Show(ex.ToString())
        End Try
    End Sub
    Private Sub buttonClose_Click(ByVal sender As Object, ByVal a As RoutedEventArgs)
        Me.Close()
    End Sub
    
    private void buttonSaveChanges_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            // Save changes made to objects tracked by the context.
            context.SaveChanges();
        }
        catch (DataServiceRequestException ex)
        {
            MessageBox.Show(ex.ToString());
    
        }
    }
    private void buttonClose_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }
    

So erstellen Sie die NorthwindClient-Anwendung und führen sie aus

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das NorthwindClient-Projekt, und wählen Sie Als Startprojekt festlegen aus.

  2. Drücken Sie F5, um die Anwendung zu starten.

    Die Projektmappe wird erstellt und die Clientanwendung wird gestartet. Daten werden vom Dienst angefordert und in der Konsole angezeigt.

  3. Bearbeiten Sie in der Spalte Quantity des Datenrasters einen Wert, und klicken Sie dann auf Speichern.

    Die Änderungen werden im Datendienst gespeichert.

    Dd728278.note(de-de,VS.100).gifHinweis:
    In dieser Version der Anwendung NorthwindClient wird das Hinzufügen und Löschen von Entitäten nicht unterstützt.

Nächste Schritte

Sie haben die Clientanwendung, die auf den Northwind OData -Beispielfeed zugreift, erfolgreich erstellt. Der WCF Data Services -Schnellstart ist damit abgeschlossen. Weitere Informationen zum Zugriff auf den OData -Feed aus einer .NET Framework Application finden Sie unter WCF Data Services-Clientbibliothek.

Siehe auch

Konzepte

Erste Schritte mit WCF Data Services
WCF Data Services-Ressourcen