Partager via


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.

Dd728278.note(fr-fr,VS.100).gifRemarque :
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

  1. Cliquez avec le bouton droit sur la solution dans l'Explorateur de solutions, cliquez sur Ajouter, puis sur Nouveau projet.

  2. Dans Types de projet, cliquez sur Windows, puis sélectionnez Application WPF dans le volet Modèles.

  3. Entrez NorthwindClient comme nom de projet, puis cliquez sur OK.

  4. 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

  1. 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.

  2. 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

  1. Dans l'Explorateur de solutions sous NorthwindClient, cliquez avec le bouton droit sur le projet, puis cliquez sur Ajouter une référence.

  2. 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;
    
  3. Insérez le code suivant qui interroge le service de données et lie le résultat à une DataServiceCollection dans la classe Window1:

    Dd728278.note(fr-fr,VS.100).gifRemarque :
    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());
        }
    }
    
  4. 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

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet NorthwindClient et sélectionnez Définir comme projet de démarrage.

  2. 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.

  3. 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.

    Dd728278.note(fr-fr,VS.100).gifRemarque :
    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