Tutorial: recuperar y mostrar datos de un servicio de dominio

En este tema se explica cómo llamar al método en el contexto de dominio desde una aplicación de Silverlight que corresponde al método de consulta de servicio de dominio al que se desea obtener acceso y, posteriormente, cómo aplicar un filtrado adicional en los resultados de dicha consulta para limitar las entidades que se devuelven o se muestran.

Para recuperar datos en su aplicación de Silverlight, llame al método en el contexto de dominio que corresponde al método de consulta de servicio de dominio que desea utilizar. Por ejemplo, un método de consulta en el servicio de dominio denominado GetProducts tendrá un método correspondiente en el contexto de dominio denominado GetProductsQuery. En la aplicación de Silverlight, la llamada a GetProductsQuery hace que ese método devuelva un objeto EntityQuery.

En la aplicación de Silverlight, puede aplicar un filtrado adicional en la consulta para restringir las entidades que se van a devolver. Un método de consulta puede devolver todos los registros de la tabla de productos, pero es posible que desee que solo se muestren los productos cuyo valor de precio sea menor que 100. Puede utilizar LINQ y un subconjunto de operadores de consulta de LINQ para modificar los resultados que devuelve la consulta. A continuación, se enumeran los operadores de consulta disponibles:

  • Where

  • OrderBy

  • ThenBy

  • Skip

  • Take

Una vez haya aplicado el filtrado adicional, pase el objeto EntityQuery a un parámetro en el método Load para ejecutar la consulta y obtener los resultados.

Si la consulta cuenta con un atributo QueryAttribute con la propiedad IsComposable establecida en false, no podrá aplicar un filtrado adicional en la consulta. Por lo general, solamente las consultas que devuelven una sola entidad tendrán establecida la propiedad IsComposable en false.

Puede enlazar los datos a un control de Silverlight que presente datos. El control DataGrid puede presentar los datos en un formato de tabla.

Este tutorial describe cómo recuperar y mostrar los datos de un servicio de dominio. También muestra cómo utilizar el operador de consulta disponible para aplicar filtrado adicional en una consulta.

Requisitos previos

Este tutorial y los demás tutoriales presentados en la documentación de WCF RIA Services requieren la instalación y configuración correctas de varios programas de requisitos previos, como Visual Studio 2010 y Silverlight Developer Runtime y SDK, además de WCF RIA Services y el Kit de herramientas de WCF RIA Services. También requieren la instalación y configuración de SQL Server 2008 R2 Express con Advanced Services, así como la instalación de las bases de datos OLTP y LT de AdventureWorks.

Los temas del nodo Requisitos previos para WCF RIA Services proporcionan instrucciones detalladas para el cumplimiento de cada uno de estos requisitos previos. Siga las instrucciones proporcionadas en ellos antes de realizar este tutorial para asegurarse de encontrar el menor número de problemas posibles al trabajar en estos tutoriales de RIA Services .

En este tutorial se supone que ha completado Tutorial: crear una solución de RIA Services y se continúa desde la aplicación creada con los procedimientos descritos en él.

Para recuperar y mostrar los datos de un servicio de dominio

  1. Abra la solución RIAServicesExample obtenida después de completar las instrucciones descritas en el tema Tutorial: crear una solución de RIA Services.

  2. En la aplicación Silverlight, abra la página de código subyacente para MainPage.xaml.

  3. Cree una instancia de EntityQuery llamando al método GetCustomersQuery.

  4. Utilice las operaciones de consulta disponibles para filtrar los clientes.

  5. Pase el objeto de consulta al método Load y asigne el valor devuelto a LoadOperation.

    El código siguiente muestra cómo recuperar clientes desde el servicio de dominio. Filtra los clientes con números de teléfono que comienzan por 583 y los ordena alfabéticamente por apellido. Los resultados se muestran en un control DataGrid.

    Partial Public Class MainPage
        Inherits UserControl
    
        Private _customerContext As New CustomerDomainContext
    
        Public Sub New()
            InitializeComponent()
    
            Dim query As EntityQuery(Of Customer)
    
            query = _
                From c In Me._customerContext.GetCustomersQuery() _
                Where c.Phone.StartsWith("583") _
                Order By c.LastName
    
            Dim loadOp = Me._customerContext.Load(query)
            CustomerGrid.ItemsSource = loadOp.Entities
        End Sub
    
    End Class
    
    public partial class MainPage : UserControl
    {
        private CustomerDomainContext _customerContext = new CustomerDomainContext();
    
        public MainPage()
        {
            InitializeComponent();
            EntityQuery<Customer> query = 
                from c in _customerContext.GetCustomersQuery()
                where c.Phone.StartsWith("583")
                orderby c.LastName
                select c;
            LoadOperation<Customer> loadOp = this._customerContext.Load(query);
            CustomerGrid.ItemsSource = loadOp.Entities;
        }
    }
    

Vea también

Tareas

Tutorial: crear una solución de RIA Services
Tutorial: agregar métodos de consulta