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
Aprire la soluzione RIAServicesExample ottenuta completando le istruzioni illustrate nell'argomento Procedura dettagliata: creazione di una soluzione Servizi RIA.
Nell'applicazione Silverlight aprire la pagina code-behind del file MainPage.xaml.
Creare un'istanza di EntityQuery chiamando il metodo
GetCustomersQuery
.Utilizzare le operazioni di query disponibili per filtrare i clienti.
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