Procedura dettagliata: recupero e visualizzazione di dati da un servizio del dominio

In questo argomento viene illustrato come chiamare il metodo sul contesto del dominio da un'applicazione Silverlight che corrisponde al metodo di query del servizio del dominio a cui si desidera accedere e quindi come applicare filtri aggiuntivi ai risultati della query per limitare le entità restituite o visualizzate.

Per recuperare i dati nell'applicazione Silverlight, chiamare il metodo sul contesto del dominio che corrisponde al metodo di query del servizio del dominio che si desidera utilizzare. Ad esempio, un metodo di query nel servizio del dominio denominato GetProducts avrà un metodo corrispondente nel contesto del dominio denominato GetProductsQuery. Nell'applicazione Silverlight chiamare il metodo GetProductsQuery che restituirà un oggetto EntityQuery.

Nell'applicazione Silverlight è possibile applicare filtri aggiuntivi alla query per limitare le entità restituite. Un metodo di query può restituire ogni record della tabella dei prodotti, mentre è possibile che si desideri visualizzare solo i prodotti con un valore del prezzo minore di 100. È possibile utilizzare LINQ e un subset di operatori di query LINQ per modificare i risultati restituiti dalla query. Di seguito sono elencati gli operatori di query disponibili:

  • Where

  • OrderBy

  • ThenBy

  • Skip

  • Take

Una volta applicati i filtri aggiuntivi, passare l'oggetto EntityQuery a un parametro nel metodo Load per eseguire la query e ottenere i risultati.

Se la query dispone di un oggetto QueryAttribute con la proprietà IsComposable impostata su false, non è possibile applicare filtri aggiuntivi alla query. In genere, solo le query che restituiscono una sola entità avranno la proprietà IsComposable impostata su false.

È possibile associare i dati a qualsiasi controllo Silverlight che include dati. Il controllo DataGrid può includere i dati in un formato tabella.

In questa procedura dettagliata viene descritto come recuperare e visualizzare i dati da un servizio del dominio. Viene inoltre illustrato come utilizzare l'operatore di query disponibile per applicare filtri aggiuntivi a una query.

Prerequisiti

Per l'esecuzione di questa e di altre procedure dettagliate descritte nella documentazione di WCF RIA Services è necessario che siano installati e configurati correttamente alcuni programmi prerequisiti quali Visual Studio 2010 e Silverlight Developer Runtime e SDK, oltre a WCF RIA Services e a WCF RIA Services Toolkit. È inoltre richiesta l'installazione e la configurazione di SQL Server 2008 R2 Express with Advanced Services e l'installazione del database AdventureWorks OLTP e LT.

Le istruzioni dettagliate per soddisfare tali prerequisiti vengono fornite negli argomenti all'interno del nodo Prerequisiti per WCF RIA Services. Seguire tali istruzioni prima di continuare con questa procedura dettagliata in modo da assicurarsi che si verifichi il minor numero possibile di problemi durante l'esecuzione della procedura dettagliata di RIA Services .

Per questa procedura dettagliata si presuppone che la Procedura dettagliata: creazione di una soluzione Servizi RIA sia stata completata e che si utilizzi l'applicazione creata con le procedure descritte.

Per recuperare e visualizzare i dati da un servizio del dominio

  1. Aprire la soluzione RIAServicesExample ottenuta completando le istruzioni illustrate nell'argomento Procedura dettagliata: creazione di una soluzione Servizi RIA.

  2. Nell'applicazione Silverlight aprire la pagina code-behind del file MainPage.xaml.

  3. Creare un'istanza di EntityQuery chiamando il metodo GetCustomersQuery.

  4. Utilizzare le operazioni di query disponibili per filtrare i clienti.

  5. Passare l'oggetto query al metodo Load e assegnare il valore restituito all'oggetto LoadOperation.

    Nel codice riportato di seguito viene illustrato come recuperare clienti dal servizio del dominio. I clienti i cui numeri di telefono iniziano con 583 vengono filtrati e quindi disposti in ordine alfabetico in base a LastName. I risultati verranno visualizzati in un oggetto 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;
        }
    }
    

Vedere anche

Attività

Procedura dettagliata: creazione di una soluzione Servizi RIA
Procedura dettagliata: aggiunta di metodi di query