Compartir a través de


Crear la aplicación cliente de .NET Framework (Tutorial rápido de WCF Data Services)

Esta es la tarea final del tutorial rápido de WCF Data Services . En esta tarea, agregará una aplicación de consola a la solución, agregará una referencia a la fuente de Open Data Protocol (OData) en esta nueva aplicación cliente y obtendrá acceso a la fuente de OData desde la aplicación cliente usando las clases del servicio de datos del cliente y las bibliotecas de cliente generadas.

Dd728278.note(es-es,VS.100).gifNota:
No es necesaria una aplicación cliente basada en .NET Framework para obtener acceso a una fuente de datos.Cualquier componente de aplicación que utilice una fuente de OData puede tener acceso al servicio de datos.Para obtener más información, vea Usar un servicio de datos en una aplicación cliente (WCF Data Services).

Para crear la aplicación cliente mediante Visual Studio

  1. En el Explorador de soluciones, haga clic con el botón secundario en la solución, después haga clic en Agregar y, a continuación, en Nuevo proyecto.

  2. En Tipos de proyecto, haga clic en Windows y, a continuación, seleccione Aplicación WPF en el recuadro Templates.

  3. Escriba NorthwindClient como nombre del proyecto y haga clic en Aceptar.

  4. Abra el archivo Window1.xaml y reemplace el código XAML por el código siguiente:

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

Para agregar al proyecto una referencia al servicio de datos

  1. Haga clic con el botón secundario en el proyecto NorthwindClient, haga clic en Agregar referencia de servicio y, a continuación, haga clic en Detectar.

    De este modo se muestra el servicio de datos de Northwind que creó en la primera tarea.

  2. En el cuadro de texto Espacio de nombres, escriba Northwind y, a continuación, haga clic en Aceptar.

    De este modo se agrega un nuevo archivo de código al proyecto, que contiene las clases de datos que se usan para obtener acceso e interactuar con los recursos del servicio de datos como objetos. Las clases de datos se crean en el espacio de nombres NorthwindClient.Northwind.

Para tener acceso a los datos del servicio de datos en la aplicación WPF

  1. En el Explorador de soluciones, en NorthwindClient, haga clic con el botón secundario en el proyecto y haga clic en Agregar referencia.

  2. En el cuadro de diálogo Agregar referencia, haga clic en la pestaña .NET, seleccione el ensamblado System.Data.Services.Client.dll y, a continuación, haga clic en Aceptar. En el Explorador de soluciones, en NorthwindClient, abra la página de código para el archivo Window1.xaml y agregue la instrucción using siguiente (Imports en Visual Basic).

    Imports System.Data.Services.Client
    Imports NorthwindClient.Northwind
    
    using System.Data.Services.Client;
    using NorthwindClient.Northwind;
    
  3. Inserte el código siguiente que consulta al servicio de datos y enlaza el resultado a una instancia de DataServiceCollection en la clase Window1:

    Dd728278.note(es-es,VS.100).gifNota:
    Debe reemplazar el nombre de host localhost:12345 por el servidor y el puerto en que se hospeda la instancia del servicio de datos de 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. Inserte el código siguiente que sirve para guardar los cambios en la clase 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();
    }
    

Para compilar y ejecutar la aplicación NorthwindClient

  1. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto NorthwindClient y seleccione Establecer como proyecto de inicio.

  2. Presione F5 para iniciar la aplicación.

    Se compila la solución y se inicia la aplicación cliente. Los datos se recuperan del servicio y se muestran en la consola.

  3. Edite un valor de la columna Cantidad de la cuadrícula de datos y, a continuación, haga clic en Guardar.

    Los cambios se guardan en el servicio de datos.

    Dd728278.note(es-es,VS.100).gifNota:
    Esta versión de la aplicación NorthwindClient no admite agregar ni eliminar entidades.

Pasos siguientes

Ha creado correctamente la aplicación cliente que tiene acceso a la fuente de OData Northwind de ejemplo. También ha completado el tutorial rápido de WCF Data Services . Para obtener más información sobre el acceso a una fuente de OData desde una aplicación de .NET Framework, vea Biblioteca de cliente de WCF Data Services.

Vea también

Conceptos

Introducción a WCF Data Services
Recursos de WCF Data Services