Procedura dettagliata: associazione di controlli Silverlight a un servizio dati WCF
In questa procedura dettagliata viene creata un'applicazione Silverlight contenente controlli associati a dati. I controlli vengono associati a record clienti cui è possibile accedere mediante un WCF Data Services.
In questa procedura dettagliata vengono illustrate le attività seguenti:
Creazione di un Entity Data Model generato dai dati nel database di esempio AdventureWorksLT.
Creazione di un WCF Data Services che espone i dati nell'Entity Data Model in un'applicazione Silverlight.
Esecuzione della Configurazione guidata origine dati per la connessione al servizio dati utilizzato per popolare la finestra Origini dati.
Creazione di un set di controlli associati a dati mediante il trascinamento degli elementi dalla finestra Origini dati a Silverlight Designer.
Creazione di pulsanti per la navigazione in avanti e indietro tra i record.
Nota
Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni vedere Personalizzazione delle impostazioni di sviluppo in Visual Studio.
Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:
Visual Studio
Accesso a un'istanza in esecuzione di SQL Server o SQL Server Express a cui è collegato il database di esempio AdventureWorksLT. Tale database può essere scaricato dal sito Web CodePlex (informazioni in lingua inglese).
Per completare la procedura dettagliata è inoltre consigliabile conoscere già i concetti seguenti:
Servizi dati WCF. Per ulteriori informazioni, vedere Cenni preliminari su WCF Data Services.
Entity Data Model e ADO.NET Entity Framework. Per ulteriori informazioni, vedere Panoramica su Entity Framework.
Utilizzo di Silverlight Designer.
Associazione a dati Silverlight. Per ulteriori informazioni, vedere Associazione dati (la pagina potrebbe essere in inglese).
Iniziare questa procedura dettagliata creando un progetto applicazione Web vuoto che possa ospitare un WCF Data Services.
Scegliere Nuovo dal menu File, quindi fare clic su Progetto.
Espandere Visual C# o Visual Basic, quindi selezionare Web.
Selezionare il modello di progetto Applicazione Web ASP.NET vuota.
Nella casella Nome digitare AdventureWorksWebApp, quindi fare clic su OK.
Per esporre dati in un'applicazione utilizzando un WCF Data Services, è necessario definire un modello dati per il servizio. In questa procedura dettagliata vene creato un Entity Data Model.
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Selezionare l'elemento del progetto ADO.NET Entity Data Model.
Denominarlo AdventureWorksDataModel.edmx e fare clic su Aggiungi.
Verrà aperta la Procedura guidata Entity Data Model.
Nella pagina Scegli contenuto Model fare clic su Genera da database, quindi su Avanti.
Nella pagina Seleziona connessione dati selezionare una delle opzioni seguenti:
Selezionare la connessione dati al database di esempio AdventureWorksLT nell'elenco a discesa, se presente.
oppure
Fare clic su Nuova connessione e creare una connessione al database AdventureWorksLT.
Verificare che l'opzione Salva impostazioni stringa di connessione entity in Web.Config come sia selezionata, quindi scegliere Avanti.
Nella pagina Seleziona oggetti di database espandere il nodo Tabelle, quindi selezionare la tabella Customer.
Fare clic su Fine.
Creare un WCF Data Services per esporre i dati in Entity Data Model.
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Selezionare l'elemento del progetto WCF Data Service.
Nella casella Nome digitare AdventureWorksDataService.svc, quindi fare clic su Aggiungi.
È necessario configurare il servizio in modo che operi sull'Entity Data Model creato.
Nel file di codice AdventureWorksDataService.svc sostituire la dichiarazione di classe AdventureWorksDataService con il codice seguente:
Public Class AdventureWorksDataService Inherits DataService(Of AdventureWorksLTEntities) ' This method is called only once to initialize service-wide policies. Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration) config.SetEntitySetAccessRule("*", EntitySetRights.All) config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2 End Sub End Class
public class AdventureWorksDataService : DataService<AdventureWorksLTEntities> { // This method is called only once to initialize service-wide policies. public static void InitializeService(DataServiceConfiguration config) { config.SetEntitySetAccessRule("*", EntitySetRights.All); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; } }
Compilare il progetto e verificare che non siano presenti errori.
Creare una nuova applicazione Silverlight, quindi aggiungere un'origine dati per accedere al servizio.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo della soluzione, scegliere Aggiungi e selezionare Nuovo progetto.
Nella finestra di dialogo Nuovo progetto espandere Visual C# o Visual Basic, quindi selezionare Silverlight.
Selezionare il modello di progetto Applicazione Silverlight.
Nella casella Nome digitare AdventureWorksSilverlightApp, quindi scegliere OK.
Nella finestra di dialogo Nuova applicazione Silverlight scegliere OK.
Creare un'origine dati basata sui dati restituiti dal servizio.
Scegliere Mostra origini dati dal menu Dati.
Nella finestra Origini dati fare clic su Aggiungi nuova origine dati.
Verrà avviata la Configurazione guidata origine dati.
Nella pagina Seleziona un tipo di origine dati della procedura guidata selezionare Servizio, quindi fare clic su Avanti.
Nella finestra di dialogo Aggiungi riferimento a servizio fare clic sul Individua.
In Visual Studio viene eseguita la ricerca dei servizi disponibili nella soluzione corrente e AdventureWorksDataService.svc viene aggiunto all'elenco di servizi disponibili nella casella Servizi.
Nella casella Spazio dei nomi digitare AdventureWorksService.
Nella casella Servizi fare clic su AdventureWorksDataService.svc, quindi su OK.
Nella pagina Aggiungi riferimento al servizio fare clic su Fine.
Verranno aggiunti nodi che rappresentano i dati restituiti dal servizio alla finestra Origini dati.
Aggiungere pulsanti alla finestra modificando XAML in Silverlight Designer.
In Esplora soluzioni fare doppio clic su MainPage.xaml.
La finestra verrà aperta in Silverlight Designer.
Nella visualizzazione XAML della finestra di progettazione aggiungere il codice seguente tra i tag <Grid>:
<Grid.RowDefinitions> <RowDefinition Height="75" /> <RowDefinition Height="525" /> </Grid.RowDefinitions> <Button HorizontalAlignment="Left" Margin="22,20,0,24" Name="backButton" Width="75" Content="<"></Button> <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75" Content=">"></Button>
Compilare il progetto.
Creare controlli che consentono di visualizzare i record clienti tramite trascinamento del nodo Clienti dalla finestra Origini dati alla finestra di progettazione.
Nella finestra Origini dati fare clic sul menu a discesa relativo al nodo Customers e scegliere Dettagli.
Espandere il nodo Clienti.
Poiché per questo esempio alcuni campi non verranno visualizzati, fare clic sul menu a discesa accanto ai nodi seguenti e selezionare Nessuno:
NameStyle
PasswordHash
PasswordSalt
rowguid
In questo modo si impedisce la creazione in Visual Studio di controlli per i nodi indicati quando vengono rilasciati nella finestra di progettazione. Per questa procedura dettagliata, si presume che l'utente finale non sia interessato a visualizzare questi dati.
Dalla finestra Origini dati trascinare il nodo Customers nella finestra di progettazione sotto i pulsanti.
Visual Studio genera il file XAML e il codice che crea un set di controlli associati ai dati dei clienti.
Utilizzare il servizio per caricare dati, quindi assegnare i dati restituiti all'origine dati associata ai controlli.
Nella finestra di progettazione fare clic in un'area vuota accanto a uno dei pulsanti.
Nel finestra Proprietà verificare che sia selezionato UserControl, quindi fare clic sulla scheda Eventi.
Individuare l'evento Caricato e fare doppio clic su di esso.
Nel file di codice visualizzato (MainPage.xaml) aggiungere le istruzioni using (C#) o Imports (Visual Basic) seguenti:
Imports System.Windows.Data Imports AdventureWorksSilverlightApp.AdventureWorksService
using System.Windows.Data; using AdventureWorksSilverlightApp.AdventureWorksService;
Sostituire il gestore eventi con il codice riportato di seguito. Assicurarsi di sostituire l'indirizzo localhost in questo codice con l'indirizzo dell'host locale nel computer di sviluppo:
Private advWorksService As AdventureWorksLTEntities Private customersViewSource As CollectionViewSource Private Sub UserControl_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded advWorksService = New AdventureWorksLTEntities(New Uri("https://localhost:6188/AdventureWorksDataService.svc")) customersViewSource = Me.Resources("CustomersViewSource") advWorksService.Customers.BeginExecute(Sub(result As IAsyncResult) customersViewSource.Source = advWorksService.Customers.EndExecute(result) End Sub, Nothing) End Sub
private AdventureWorksLTEntities advWorksService; private System.Windows.Data.CollectionViewSource customersViewSource; private void UserControl_Loaded(object sender, RoutedEventArgs e) { advWorksService = new AdventureWorksLTEntities(new Uri("https://localhost:54961/AdventureWorksDataService.svc")); customersViewSource = this.Resources["customersViewSource"] as System.Windows.Data.CollectionViewSource; advWorksService.Customers.BeginExecute(result => customersViewSource.Source = advWorksService.Customers.EndExecute(result), null); }
Compilare ed eseguire l'applicazione per verificare che sia possibile visualizzare i record clienti.
Scegliere Compila soluzione dal menu Compila. Verificare che la soluzione venga compilata senza errori.
Premere F5.
Verificare che venga visualizzato il primo record nella tabella Customers.
Chiudere l'applicazione.
Nota
Se viene visualizzato un errore, verificare che il codice contenga la porta corretta per il server di sviluppo ASP.NET.
Aggiungere il codice che consente di scorrere i record utilizzando i pulsanti < e >.
Aprire il file MainPage.xaml nella finestra di progettazione e fare doppio clic sul pulsante <.
Sostituire il gestore eventi backButton_Click generato con il codice seguente:
Private Sub backButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles backButton.Click customersViewSource.View.MoveCurrentToPrevious() If customersViewSource.View.IsCurrentBeforeFirst Then customersViewSource.View.MoveCurrentToFirst() End If End Sub
private void backButton_Click(object sender, RoutedEventArgs e) { customersViewSource.View.MoveCurrentToPrevious(); if (customersViewSource.View.IsCurrentBeforeFirst) customersViewSource.View.MoveCurrentToFirst(); }
Tornare alla finestra di progettazione e fare doppio clic sul pulsante >.
In Visual Studio verrà aperto il file code-behind e verrà creato un nuovo gestore eventi nextButton_Click.
Sostituire il gestore eventi nextButton_Click generato con il codice seguente:
Private Sub nextButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles nextButton.Click customersViewSource.View.MoveCurrentToNext() If customersViewSource.View.IsCurrentAfterLast Then customersViewSource.View.MoveCurrentToLast() End If End Sub
private void nextButton_Click(object sender, RoutedEventArgs e) { customersViewSource.View.MoveCurrentToNext(); if (customersViewSource.View.IsCurrentAfterLast) customersViewSource.View.MoveCurrentToLast(); }
Compilare ed eseguire l'applicazione per verificare che sia possibile visualizzare ed esplorare i record clienti.
Scegliere Compila soluzione dal menu Compila. Verificare che la soluzione venga compilata senza errori.
Premere F5.
Verificare che venga visualizzato il primo record nella tabella Customers.
Fare clic sui pulsanti < e > per esplorare i record clienti.
Chiudere l'applicazione.
Nota
Se viene visualizzato un errore, verificare che il codice contenga la porta corretta per il server di sviluppo ASP.NET.
Dopo avere completato questa procedura dettagliata, è possibile eseguire le attività correlate seguenti:
Imparare a salvare le modifiche nel database. Per ulteriori informazioni, vedere Associazione dati (la pagina potrebbe essere in inglese).
Imparare a incorporare altre funzionalità utilizzando WCF Data Services nelle applicazioni Silverlight. Per ulteriori informazioni, vedere ADO.NET Data Services (Silverlight) (la pagina potrebbe essere in inglese).