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 Customizing Development Settings in Visual Studio.

Prerequisiti

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:

Creazione del progetto del servizio

Iniziare questa procedura dettagliata creando un progetto applicazione Web vuoto che possa ospitare un WCF Data Services.

Per creare il progetto del servizio

  1. Scegliere Nuovo dal menu File, quindi fare clic su Progetto.

  2. Espandere Visual C# o Visual Basic, quindi selezionare Web.

  3. Selezionare il modello di progetto Applicazione Web ASP.NET vuota.

  4. Nella casella Nome digitare AdventureWorksWebApp, quindi fare clic su OK.

Creazione di un Entity Data Model per il servizio

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.

Per creare un Entity Data Model

  1. Scegliere Aggiungi nuovo elemento dal menu Progetto.

  2. Selezionare l'elemento del progetto ADO.NET Entity Data Model.

  3. Denominarlo AdventureWorksDataModel.edmx e fare clic su Aggiungi.

    Verrà aperta la Procedura guidata Entity Data Model.

  4. Nella pagina Scegli contenuto Model fare clic su Genera da database, quindi su Avanti.

  5. 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.

  6. Verificare che l'opzione Salva impostazioni stringa di connessione entity in Web.Config come sia selezionata, quindi scegliere Avanti.

  7. Nella pagina Seleziona oggetti di database espandere il nodo Tabelle, quindi selezionare la tabella Customer.

  8. Fare clic su Fine.

Creazione del servizio

Creare un WCF Data Services per esporre i dati in Entity Data Model.

Per creare il servizio

  1. Scegliere Aggiungi nuovo elemento dal menu Progetto.

  2. Selezionare l'elemento del progetto WCF Data Service.

  3. Nella casella Nome digitare AdventureWorksDataService.svc, quindi fare clic su Aggiungi.

Configurazione del servizio

È necessario configurare il servizio in modo che operi sull'Entity Data Model creato.

Per configurare il servizio

  1. 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;
        }
    }
    
  2. Compilare il progetto e verificare che non siano presenti errori.

Creazione dell'applicazione Silverlight

Creare una nuova applicazione Silverlight, quindi aggiungere un'origine dati per accedere al servizio.

Per creare l'applicazione Silverlight

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo della soluzione, scegliere Aggiungi e selezionare Nuovo progetto.

  2. Nella finestra di dialogo Nuovo progetto espandere Visual C# o Visual Basic, quindi selezionare Silverlight.

  3. Selezionare il modello di progetto Applicazione Silverlight.

  4. Nella casella Nome digitare AdventureWorksSilverlightApp, quindi scegliere OK.

  5. Nella finestra di dialogo Nuova applicazione Silverlight scegliere OK.

Aggiunta dell'origine dati all'applicazione Silverlight

Creare un'origine dati basata sui dati restituiti dal servizio.

Per creare l'origine dati

  1. Scegliere Mostra origini dati dal menu Dati.

  2. Nella finestra Origini dati fare clic su Aggiungi nuova origine dati.

    Verrà avviata la Configurazione guidata origine dati.

  3. Nella pagina Seleziona un tipo di origine dati della procedura guidata selezionare Servizio, quindi fare clic su Avanti.

  4. 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.

  5. Nella casella Spazio dei nomi digitare AdventureWorksService.

  6. Nella casella Servizi fare clic su AdventureWorksDataService.svc, quindi su OK.

  7. Nella pagina Aggiungi riferimento al servizio fare clic su Fine.

    Verranno aggiunti nodi che rappresentano i dati restituiti dal servizio alla finestra Origini dati.

Definizione dell'interfaccia utente della finestra

Aggiungere pulsanti alla finestra modificando XAML in Silverlight Designer.

Per creare il layout della finestra

  1. In Esplora soluzioni fare doppio clic su MainPage.xaml.

    La finestra verrà aperta in Silverlight Designer.

  2. 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="&lt;"></Button>
    <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75" Content="&gt;"></Button>
    
  3. Compilare il progetto.

Creazione dei controlli associati a dati

Creare controlli che consentono di visualizzare i record clienti tramite trascinamento del nodo Clienti dalla finestra Origini dati alla finestra di progettazione.

Per creare i controlli associati a dati

  1. Nella finestra Origini dati fare clic sul menu a discesa relativo al nodo Customers e scegliere Dettagli.

  2. Espandere il nodo Clienti.

  3. 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.

  4. 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.

Caricamento dei dati dal servizio

Utilizzare il servizio per caricare dati, quindi assegnare i dati restituiti all'origine dati associata ai controlli.

Per caricare i dati dal servizio

  1. Nella finestra di progettazione fare clic in un'area vuota accanto a uno dei pulsanti.

  2. Nel finestra Proprietà verificare che sia selezionato UserControl, quindi fare clic sulla scheda Eventi.

  3. Individuare l'evento Caricato e fare doppio clic su di esso.

  4. 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;
    
  5. 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);
    }
    

Verifica dell'applicazione

Compilare ed eseguire l'applicazione per verificare che sia possibile visualizzare i record clienti.

Per eseguire il test dell'applicazione

  1. Scegliere Compila soluzione dal menu Compila. Verificare che la soluzione venga compilata senza errori.

  2. Premere F5.

  3. Verificare che venga visualizzato il primo record nella tabella Customers.

  4. Chiudere l'applicazione.

    Nota

    Se viene visualizzato un errore, verificare che il codice contenga la porta corretta per il server di sviluppo ASP.NET.

Esplorazione dei record

Aggiungere il codice che consente di scorrere i record utilizzando i pulsanti < e >.

Per consentire agli utenti di esplorare i record delle vendite

  1. Aprire il file MainPage.xaml nella finestra di progettazione e fare doppio clic sul pulsante <.

  2. 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();
    }
    
  3. 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.

  4. 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();
    }
    

Verifica dell'applicazione

Compilare ed eseguire l'applicazione per verificare che sia possibile visualizzare ed esplorare i record clienti.

Per eseguire il test dell'applicazione

  1. Scegliere Compila soluzione dal menu Compila. Verificare che la soluzione venga compilata senza errori.

  2. Premere F5.

  3. Verificare che venga visualizzato il primo record nella tabella Customers.

  4. Fare clic sui pulsanti < e > per esplorare i record clienti.

  5. Chiudere l'applicazione.

    Nota

    Se viene visualizzato un errore, verificare che il codice contenga la porta corretta per il server di sviluppo ASP.NET.

Passaggi successivi

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).

Vedere anche

Altre risorse

Accesso dati e strutture di dati