Procedura dettagliata: creazione di una soluzione Servizi RIA
In questa procedura dettagliata, viene creata un'applicazione WCF RIA Services che recupera dati dal database AdventureWorksLT, quindi lo rende disponibile a un client Silverlight in cui vengono presentati. L'accesso ai dati dall'origine dati avviene mediante la creazione classi di entità che rappresentano varie tabelle di database nel server nel livello intermedio, quindi i dati vengono presentati creando un servizio del dominio che rende accessibili le entità del livello intermedio al client Silverlight. Questa procedura dettagliata rappresenta un punto di partenza per molte delle altre procedure dettagliate nella documentazione di RIA Services .
Prerequisiti
Per l'esecuzione di questa e di altre procedure dettagliate descritte nella documentazione di 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 .
Creazione di una soluzione con un collegamento a Servizi RIA tra progetti
Per impostare una soluzione Servizi RIA
Creare un nuovo progetto RIA Services in Visual Studio 2010 selezionando File, Nuovo, quindi Progetto.
Verrà visualizzata la finestra di dialogo Nuovo progetto.
Selezionare il modello Applicazione Silverlight dal gruppo Silverlight di Modelli installati e denominare il nuovo progetto RIAServicesExample.
Fare clic su OK.
Verrà visualizzata la finestra di dialogo Nuova applicazione Silverlight.
Selezionare la casella di controllo Abilita WCF RIA Services nella parte inferiore della finestra di dialogo. Se si seleziona questa casella viene creato un collegamento RIA Services tra il progetto client e il progetto server.
Fare clic su OK per creare la soluzione.
La soluzione contiene due progetti: un progetto client e un progetto server. Il progetto client è denominato RIAServicesExample e contiene il codice Silverlight utilizzato per creare il livello di presentazione. Il progetto server è denominato RIAServicesExample.Web e contiene il codice del livello intermedio.
Creazione di modelli di dati
In questa sezione verranno create le classi di entità ADO.NET che rappresentano i dati dal database AdventureWorksLT. RIA Services funziona con una varietà di classi e origini dati della modellazione dei dati. Per ulteriori informazioni sulle opzioni per accedere ai dati con RIA Services , vedere l'argomento Dati.
Attenzione: |
---|
Quando si utilizza un Entity Data Model (EMD) con Visual Studio 2010, è necessario selezionare l'opzione Includi colonne di chiavi esterne nel modello. Per impostazione predefinita, questa opzione viene selezionata quando si utilizza la Procedura guidata Entity Data Model. È inoltre necessario utilizzare anche il comportamento predefinito per l'incorporamento delle informazioni di mapping EMD nell'assembly. |
Per rendere disponibili i dati nel livello intermedio
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto server, RIAServicesExample.Web, scegliere Aggiungi, quindi Nuovo elemento.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
Dall'elenco di categorie, scegliere Dati e selezionare il modello ADO.NET Entity Data Model.
Denominare il nuovo file AdventureWorksModel.edmx, quindi fare clic su Aggiungi.
Viene visualizzata la procedura guidata Entity Data Model.
Nella schermata Scegli contenuto Model fare clic su Genera da database, quindi fare clic su Avanti.
Nella finestra di dialogo Scegli la connessione dati creare una connessione dati al database e fare clic su Avanti.
Nella schermata Seleziona oggetti di database selezionare le tabelle Address, Customer e CustomerAddress.
Verificare che la casella di controllo Includi colonne di chiavi esterne nel modello sia selezionata per impostazione predefinita e fare clic su Fine.
Vengono creati i modelli di entità per le tabelle.
Compilare la soluzione (CTRL+MAIUSC+B).
Creazione di un servizio del dominio
In questa sezione verrà aggiunto un servizio del dominio al progetto del livello intermedio. Un servizio del dominio espone al progetto client le entità di dati e le operazioni nel progetto server. È possibile aggiungere la logica di business al servizio del dominio per gestire l'interazione del client con i dati.
Per creare il servizio del dominio
Fare clic con il pulsante destro del mouse sul progetto server, scegliere Aggiungi, quindi Nuovo elemento.
Nell'elenco delle categorie, scegliere Web, quindi selezionare il modello Classe di DomainService.
Denominare la classe CustomerDomainService.cs (o CustomerDomainService.vb).
Fare clic su Aggiungi.
Verrà visualizzata la finestra di dialogo Aggiungi una nuova classe DomainService.
Verificare che sia selezionata la casella Abilita l'accesso client.
Selezionare l'entità Customer, quindi selezionare la relativa casella Abilita modifica.
Fare clic su OK.
La classe
CustomerDomainService
viene generata in un nuovo file CustomerDomainService.cs (o CustomerDomainService.vb).Aprire il file. Notare le seguenti caratteristiche del file:
La classe
CustomerDomainService
deriva dalla classe LinqToEntitiesDomainService, classe di base astratta nel framework RIA Services . Questa classe di base è stata utilizzata automaticamente poiché il servizio del dominio espone una classe di dati di entità ADO.NET.La classe di base generica viene associata alla classe di entità creata nei passaggi precedenti dall'oggetto
AdventureWorksLTEntities
di tipo ObjectContext nel parametro generico.La classe
CustomerDomainService
è contrassegnata dall'attributo EnableClientAccessAttribute per indicare che è visibile al livello client.Viene generato un metodo della query denominato
GetCustomers
. Questo metodo restituisce ciascun elemento senza filtrarlo o effettuarne l'ordinamento.Sono stati generati i metodi per inserire, aggiornare ed eliminare clienti dai record.
Creazione del client Silverlight
Nelle altre procedure dettagliate, verrà mostrato come aggiungere la logica di business al servizio del dominio. Per questa procedura dettagliata, verrà semplicemente utilizzato il metodo GetCustomers
generato per impostazione predefinita.
Le classi proxy client vengono generate una volta compilata la soluzione. Il collegamento RIA Services stabilito tra il progetto client e il progetto server rende possibile questa generazione di codice. Queste classi proxy client forniscono l'accesso ai dati dal client.
Per visualizzare le classi proxy client generate
Compilare la soluzione.
Quando si compila la soluzione, il codice viene generato nel progetto client.
In Esplora soluzioni, selezionare il progetto client RIAServicesExample e fare clic sull'icona Mostra tutti i file nella parte superiore della finestra.
Si noti che la cartella Generated_Code contiene un file RIAServicesExample.Web.g.cs (o RIAServicesExample.Web.g.vb).
Aprire il file di codice nella cartella Generated_Code.
Notare le seguenti caratteristiche del file:
Viene generata una classe
WebContext
che deriva dalla classe WebContextBase.Viene generata una classe
CustomerDomainContext
che deriva dalla classe DomainContext. Questa classe dispone di un metodo denominatoGetCustomersQuery
che corrisponde al metodo di query creato nel servizio del dominio.Una classe
Customer
che deriva dalla classe Entity viene generata per l'entità esposta dal servizio del dominio. La classe dell'entitàCustomer
nel progetto client corrisponde all'entitàCustomer
nel server.
Per visualizzare i dati nel client Silverlight
Aprire MainPage.xaml.
Dalla casella degli strumenti sulla sinistra, trascinare un controllo DataGrid nell'elemento Grid nella visualizzazione XAML.
Il trascinamento del controllo DataGrid dalla casella degli strumenti determina l'aggiunta automatica di un'istruzione
using System.Windows.Controls
dello spazio dei nomi e di un riferimento all'assembly System.Windows.Controls.Data.Attenzione: Se si aggiunge DataGrid senza trascinarlo dalla casella degli strumenti, è necessario aggiungere manualmente i riferimenti all'assembly System.Windows.Controls.Data al progetto client e l'istruzione using al file code-behind. Modificare il valore dell'oggetto
AutoGeneratedColums
in True, denominare l'elementoCustomerGrid``DataGrid
e rettificare gli attributi di altezza e larghezza come illustrato nel seguente codice XAML.<UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="RIAServicesExample.MainPage" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="https://schemas.microsoft.com/expression/blend/2008" xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> <data:DataGrid Name="CustomerGrid"></data:DataGrid> </Grid> </UserControl>
Aprire il code-behind per MainPage.xaml.
Aggiungere due istruzioni
using
(C#) oImports
(Visual Basic):using RIAServicesExample.Web;
eusing System.ServiceModel.DomainServices.Client;
.Lo spazio dei nomi RIAServicesExample.Web è quello contenente il codice generato per il progetto client in RIAServicesExample.Web.g.cs (o RIAServicesExample.Web.g.vb).
Per creare un'istanza di
CustomerDomainContext
, aggiungere la riga di codiceprivate CustomerDomainContext _customerContext = new CustomerDomainContext();
nella classeMainPage
.Imports System.ServiceModel.DomainServices.Client Imports RIAServicesExample.Web Partial Public Class MainPage Inherits UserControl Private _customerContext As New CustomerDomainContext Public Sub New() InitializeComponent() Dim loadOp = Me._customerContext.Load(Me._customerContext.GetCustomersQuery()) CustomerGrid.ItemsSource = loadOp.Entities End Sub End Class
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using RIAServicesExample.Web; using System.ServiceModel.DomainServices.Client; namespace RIAServicesExample { public partial class MainPage : UserControl { private CustomerDomainContext _customerContext = new CustomerDomainContext(); public MainPage() { InitializeComponent(); LoadOperation<Customer> loadOp = this._customerContext.Load(this._customerContext.GetCustomersQuery()); CustomerGrid.ItemsSource = loadOp.Entities; } } }
Recuperare le entità del cliente chiamando il metodo
GetCustomersQuery
con LoadOperation:LoadOperation<Customer> loadOp = this._customerContext.Load(this._customerContext.GetCustomersQuery());
.Associare le entità caricate a DataGrid con
CustomerGrid.ItemsSource = loadOp.Entities;
.Per riassumere, il file MainPage.xaml.cs a questo punto contiene il codice seguente:
//Namespaces added using RIAServicesExample.Web; using System.ServiceModel.DomainServices.Client; namespace RIAServicesExample { public partial class MainPage : UserControl { private CustomerDomainContext _customerContext = new CustomerDomainContext(); public MainPage() { InitializeComponent(); LoadOperation<Customer> loadOp = this._customerContext.Load(this._customerContext.GetCustomersQuery()); CustomerGrid.ItemsSource = loadOp.Entities; } } }
Eseguire (F5) l'applicazione.
Verrà visualizzata una griglia dei dati simile a quella riportata di seguito.
Passaggi successivi
In questa procedura dettagliata sono stati mostrati solo i passaggi di base per creare un progetto e recuperare dati non filtrati da un servizio del dominio. Di seguito vengono forniti alcuni suggerimenti per l'utilizzo di funzionalità aggiuntive.
Creare metodi della query personalizzati, ad esempio query che accettano un parametro che viene utilizzato in genere per il filtraggio di dati. Per ulteriori informazioni, vedere Procedura dettagliata: aggiunta di metodi di query.
Aggiungere la logica di business a un servizio del dominio che contiene metodi di aggiornamento, inserimento ed eliminazione e che gestisce il processo per la modifica dei dati. Per ulteriori informazioni, vedere Procedura: aggiungere la logica di business al servizio del dominio.