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.
Hinweis: |
---|
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
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, klicken Sie auf Hinzufügen und dann auf Neues Projekt.
Klicken Sie in Projekttypen auf Windows, und wählen Sie dann im Bereich Vorlagen die Option WPF-Anwendung aus.
Geben Sie NorthwindClient als Projektnamen ein, und klicken Sie dann auf OK.
Ö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
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.
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
Klicken Sie im Projektmappen-Explorer unter NorthwindClient mit der rechten Maustaste auf das Projekt, und klicken Sie dann auf Verweis hinzufügen.
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;
Fügen Sie den folgenden Code ein, der diesen Datendienst abfragt und das Ergebnis an eine DataServiceCollection in der Window1-Klasse bindet:
Hinweis: 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()); } }
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
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das NorthwindClient-Projekt, und wählen Sie Als Startprojekt festlegen aus.
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.
Bearbeiten Sie in der Spalte Quantity des Datenrasters einen Wert, und klicken Sie dann auf Speichern.
Die Änderungen werden im Datendienst gespeichert.
Hinweis: 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