Création de l'application cliente .NET Framework (démarrage rapide WCF Data Services)
C'est la dernière tâche du démarrage rapide Services de données WCF . Dans cette tâche, vous allez ajouter une application console à la solution, une référence au flux Protocole OData (Open Data) dans cette nouvelle application cliente et accéder au flux OData de l'application cliente à l'aide des classes de service de données client et des bibliothèques clientes générées.
Remarque : |
---|
Il n'est pas obligatoire pour une application cliente .NET Framework d'accéder à un flux de données.Le service de données est accessible pour tout composant d'application qui consomme un flux OData .Pour plus d'informations, consultez Utilisation d'un service de données dans une application cliente (WCF Data Services). |
Pour créer l'application cliente à l'aide de Visual Studio
Cliquez avec le bouton droit sur la solution dans l'Explorateur de solutions, cliquez sur Ajouter, puis sur Nouveau projet.
Dans Types de projet, cliquez sur Windows, puis sélectionnez Application WPF dans le volet Modèles.
Entrez NorthwindClient comme nom de projet, puis cliquez sur OK.
Ouvrez le fichier Window1.xaml et remplacez le code XAML par le code suivant :
<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>
Pour ajouter une référence de service de données au projet
Cliquez avec le bouton droit sur le projet NorthwindClient, puis cliquez sur Ajouter une référence de service, puis sur Découvrir.
Cette opération affiche le service de données Northwind que vous avez créé dans la première tâche.
Dans la zone de texte Espace de noms, tapez Northwind, puis cliquez sur OK.
Cette opération ajoute un nouveau fichier de code au projet qui contient les classes de données utilisées pour accéder et interagir avec les ressources du service des données sous la forme d'objets. Les classes de données sont créées dans l'espace de noms
NorthwindClient.Northwind
.
Pour accéder aux données du service des données dans l'application WPF
Dans l'Explorateur de solutions sous NorthwindClient, cliquez avec le bouton droit sur le projet, puis cliquez sur Ajouter une référence.
Dans la boîte de dialogue Ajouter une référence, cliquez sur l'onglet .NET, sélectionnez l'assembly System.Data.Services.Client.dll, puis cliquez sur OK. Dans l'Explorateur de solutions sous NorthwindClient, ouvrez la page de codes pour le fichier Window1.xaml et ajoutez l'instruction suivante using (Imports en Visual Basic).
Imports System.Data.Services.Client Imports NorthwindClient.Northwind
using System.Data.Services.Client; using NorthwindClient.Northwind;
Insérez le code suivant qui interroge le service de données et lie le résultat à une DataServiceCollection dans la classe Window1:
Remarque : Vous devez remplacer le nom d'hôte localhost:12345
par le serveur et le port qui hébergent votre instance du service de données Northwind.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()); } }
Insérez le code suivant qui enregistre les modifications dans la classe Window1 :
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(); }
Pour générer et exécuter l'application NothwindClient
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet NorthwindClient et sélectionnez Définir comme projet de démarrage.
Appuyez sur F5 pour démarrer l'application.
Cette opération génère et démarre l'application cliente. Les données sont demandées auprès du service et s'affichent dans la console.
Modifiez une valeur dans la colonne Quantité de la grille de données, puis cliquez sur Enregistrer.
Les modifications sont enregistrées sur le service de données.
Remarque : Cette version de l'application NorthwindClient ne prend pas en charge l'ajout et la suppression d'entités.
Étapes suivantes
Vous avez créé correctement l'application cliente qui accède à l'exemple de flux OData Northwind. Vous avez également terminé le démarrage rapide Services de données WCF . Pour plus d'informations sur l'accès à un flux OData depuis une application .NET Framework, consultez Bibliothèque cliente de WCF Data Services.
Voir aussi
Concepts
Mise en route de WCF Data Services
Ressources WCF Data Services