Condividi tramite


Procedura dettagliata: aggiornamento di record mediante stored procedure

Non è possibile chiamare una stored procedure in un database SQL Server direttamente da LightSwitch, ma è possibile creare un servizio di (RIA) RIA (rich Internet application) Windows Communication Foundation (WCF) per esporre le stored procedure e quindi per accedere al servizio dall'applicazione di LightSwitch.In questa procedura dettagliata viene illustrato come inserire, aggiornare ed eliminare i record cliente in un'applicazione di LightSwitch utilizzando stored procedure e un servizio WCF RIA.

Molti amministratori di database non consentono l'accesso diretto alle tabelle, anziché esponendo in sola lettura e fornendo stored procedure inserimento, aggiornamento e di eliminazione di record.LightSwitch non riconosce le stored procedure, pertanto un database basato sulle stored procedure per aggiornare i record potrebbe sembrare inizialmente inutilizzabile.Se si esegue il lavoro un poco aggiuntivo, è effettivamente utilizzare questi database da LightSwitch.

Prerequisiti

In questa procedura dettagliata viene utilizzato il database Northwind dall'esercitazione di Presentazione guidata di LightSwitch.Per ulteriori informazioni, vedere Installazione del database di esempio Northwind.

Creare stored procedure

Nella maggior parte dei casi, si accederà stored procedure già esistenti in un database.Il database Northwind non ha stored procedure necessarie per inserire, aggiornare ed eliminare i record cliente, pertanto è necessario aggiungerli.

Per aggiungere stored procedure

  1. Sulla barra dei menu, scegliere Visualizza, Esplora oggetti di SQL Server.

  2. Nella finestra Esplora oggetti di SQL Server, espandere il nodo del database NORTHWIND quindi scegliere Programmazione.

  3. Espandere il nodo Programmazione quindi scegliere Stored procedure.

  4. Aprire il menu di scelta rapida per Stored proceduree quindi scegliere Aggiungi nuova stored procedure.

  5. In Editor del codice, sostituirne il contenuto con il seguente codice Transact-SQL e quindi scegliere il pulsante Aggiorna.

    CREATE Procedure [dbo].[InsertCustomer]
        @CustomerID nchar(5),
        @CompanyName nvarchar(40),
        @ContactName nvarchar(30),
        @ContactTitle nvarchar(30),
        @Address nvarchar(60),
        @City nvarchar(15),
        @Region nvarchar(15),
        @PostalCode nvarchar(10),
        @Country nvarchar(15),
        @Phone nvarchar(24),
        @Fax nvarchar(24)
    AS
    INSERT INTO [dbo].[Customers]
               ([CustomerID]
               ,[CompanyName]
               ,[ContactName]
               ,[ContactTitle]
               ,[Address]
               ,[City]
               ,[Region]
               ,[PostalCode]
               ,[Country]
               ,[Phone]
               ,[Fax])
         VALUES
               (@CustomerID
               ,@CompanyName
               ,@ContactName
               ,@ContactTitle
               ,@Address
               ,@City
               ,@Region
               ,@PostalCode
               ,@Country
               ,@Phone
               ,@Fax)
    
  6. Nella finestra di dialogo Anteprima aggiornamenti database, scegliere il pulsante Aggiorna database.

    La stored procedure InsertCustomer viene aggiunta al database.

  7. Aprire il menu di scelta rapida per Stored proceduree quindi scegliere Aggiungi nuova stored procedure.

  8. In Editor del codice, sostituirne il contenuto con il seguente codice Transact-SQL e quindi scegliere il pulsante Aggiorna.

    CREATE PROCEDURE [dbo].[UpdateCustomer]
        @CustomerID nchar(5),
        @CompanyName nvarchar(40),
        @ContactName nvarchar(30),
        @ContactTitle nvarchar(30),
        @Address nvarchar(60),
        @City nvarchar(15),
        @Region nvarchar(15),
        @PostalCode nvarchar(10),
        @Country nvarchar(15),
        @Phone nvarchar(24),
        @Fax nvarchar(24)
    AS
    UPDATE [dbo].[Customers]
       SET [CompanyName] = @CompanyName
          ,[ContactName] = @ContactName
          ,[ContactTitle] = @ContactTitle
          ,[Address] = @Address
          ,[City] = @City
          ,[Region] = @Region
          ,[PostalCode] = @PostalCode
          ,[Country] = @Country
          ,[Phone] = @Phone
          ,[Fax] = @Fax
     WHERE CustomerID=@CustomerID
    
  9. Nella finestra di dialogo Anteprima aggiornamenti database, scegliere il pulsante Aggiorna database.

    La stored procedure UpdateCustomer viene aggiunta al database.

  10. Aprire il menu di scelta rapida per Stored proceduree quindi scegliere Aggiungi nuova stored procedure.

  11. In Editor del codice, sostituirne il contenuto con il seguente codice Transact-SQL e quindi scegliere il pulsante Aggiorna.

    CREATE PROCEDURE [dbo].[DeleteCustomer]
        @CustomerID nchar(5)
    AS
    
    DELETE FROM [dbo].[Customers]
     WHERE CustomerID=@CustomerID
    
  12. Nella finestra di dialogo Anteprima aggiornamenti database, scegliere il pulsante Aggiorna database.

    La stored procedure DeleteCustomer viene aggiunta al database.

Creare un modello entity data model

Il passaggio successivo consiste nel creare un modello EDM (Entity Framework che eseguirà, aggiorna ed eliminare i record utilizzando stored procedure appena aggiunto.

Per creare un modello di dati

  1. Nella barra del menu, scegliere File, Nuovo, Progetto.

  2. Nella finestra di dialogo Nuovo progetto, espandere Visual Basic o il nodo Visual C# e quindi scegliere il modello Libreria di classi.

  3. Nella casella di testo Nome, immettere NorthwindServicequindi scegliere il pulsante OK.

  4. In Esplora soluzioni, scegliere dal menu di scelta rapida del nodo MyProject quindi scegliere Apri.

  5. Nell'elenco Framework di destinazione, scegliere .NET Framework 4.

  6. In Esplora soluzioni, scegliere dal menu di scelta rapida per NorthwindService, scegliere Aggiungiquindi scegliere Nuovo elemento.

  7. Nella finestra di dialogo Aggiungi nuovo elemento, scegliere il modello ADO.NET Entity Data Model.

  8. Nella casella di testo Nome, immettere Northwind.edmxquindi scegliere il pulsante Aggiungi.

  9. In Procedura guidata Entity Data Model, selezionare l'icona Genera da database e quindi scegliere il pulsante Avanti.

  10. Nella pagina Seleziona connessione dati, scegliere il pulsante Nuova connessione.

  11. Nella finestra di dialogo Proprietà connessione, nella casella di testo Nome server, il nome del server in cui il database Northwind è installato.

    Nota di J#Nota di J#

    È possibile trovare il nome in Esplora oggetti di SQL Server.

  12. Nella casella di testo Seleziona o immetti nome di database, immettere Northwind.

  13. Scegliere il pulsante OK quindi scegliere il pulsante Avanti.

  14. Nella pagina Scegli impostazioni e oggetti di database, espandere il nodo Tabelle quindi selezionare la casella di controllo Clienti.

  15. Espandere il nodo Stored procedure e funzioni, selezionare DeleteCustomer, InsertCustomere le caselle di controllo UpdateCustomer quindi scegliere il pulsante Fine.

    Il modello di entità viene generato e il diagramma di database Northwind.edmx visualizzato.

    [!NOTA]

    Se una finestra di dialogo Avviso di sicurezza viene visualizzato, scegliere il pulsante OK per eseguire il modello.

  16. Aprire il menu di scelta rapida per l'entità Cliente quindi scegliere Mapping stored procedure.

  17. Nella finestra Dettagli sul mapping, <Select Insert Function> nell'elenco, scegliere InsertCustomer.

  18. <Select Update Function> Nell'elenco, scegliere UpdateCustomer.

  19. <Select Delete Function> Nell'elenco, scegliere DeleteCustomer.

  20. Chiudere la finestra di progettazione Northwind.edmx.

  21. In Esplora soluzioni, scegliere il pulsante della barra degli strumenti Mostra tutti i file.

  22. Espandere il nodo per Northwind.edmxquindi eliminare i file Northwind.Context.tt e Northwind.tt.

  23. Aprire il file Northwind.edmx ed evidenziare lo spazio vuoto dall'entità Cliente.

  24. Nella finestra Proprietà, modificare il valore della proprietà Strategia di generazione del codice a Predefinite.

  25. Sulla barra dei menu, scegliere Compila, Compila NorthwindService.

    Ora il modello di dati Entity Framework che eseguirà, aggiorna ed eliminare record utilizzando le stored procedure.

Creare un servizio WCF RIA

Se si crea un servizio WCF RIA, l'applicazione di LightSwitch possibile utilizzare il modello di dati Entity Framework come origine dati.

Per creare un servizio

  1. In Esplora soluzioni, scegliere dal menu di scelta rapida del progetto NorthwindService, scegliere Aggiungiquindi scegliere Nuovo elemento.

  2. Nella finestra di dialogo Aggiungi nuovo elemento, scegliere il modello Classe di servizio del dominio domainservice.

  3. Nella casella di testo Nome, immettere NorthwindServicequindi scegliere il pulsante Aggiungi.

  4. Nella finestra di dialogo Aggiungi una nuova classe DomainService, scegliere il pulsante OK.

  5. In Esplora soluzioni, scegliere dal menu di scelta rapida per Northwind Servicequindi scegliere Aggiungi riferimento.

  6. Scegliere il nodo Estensioni, selezionare la casella di controllo System.ServiceModel.DomainServices.EntityFramework quindi scegliere il pulsante OK.

  7. Aggiungere il codice seguente alla classe NorthwindService :

    Imports System.ServiceModel.DomainServices.EntityFramework
    
    Public Class NorthwindService
        Inherits LinqToEntitiesDomainService(Of NorthwindEntities)
    
        <Query(IsDefault:=True)>
        Public Function GetCustomers() As IQueryable(Of Customer)
            Return Me.ObjectContext.Customers
        End Function
    
        Public Sub InsertCustomer(ByVal customer As Customer)
            If ((customer.EntityState = EntityState.Detached) = False) Then
                Me.ObjectContext.ObjectStateManager.
                    ChangeObjectState(customer, EntityState.Added)
            Else
                Me.ObjectContext.Customers.AddObject(customer)
            End If
        End Sub
    
        Public Sub UpdateCustomer(ByVal currentCustomer As Customer)
            Me.ObjectContext.Customers.AttachAsModified(currentCustomer,
                Me.ChangeSet.GetOriginal(currentCustomer))
        End Sub
    
        Public Sub DeleteCustomer(ByVal customer As Customer)
            If ((customer.EntityState = EntityState.Detached) = False) Then
                Me.ObjectContext.ObjectStateManager.
                    ChangeObjectState(customer, EntityState.Deleted)
            Else
                Me.ObjectContext.Customers.Attach(customer)
                Me.ObjectContext.Customers.DeleteObject(customer)
            End If
        End Sub
    End Class
    
    namespace NorthwindService
    {
        public class NorthwindService : LinqToEntitiesDomainService<NorthwindEntities>
        {
            [Query(IsDefault = true)]
            public IQueryable<Customer> GetCustomers()
            {
                return this.ObjectContext.Customers;
            }
    
            public void InsertCustomer(Customer customer)
            {
                if ((customer.EntityState != EntityState.Detached))
                {
                    this.ObjectContext.ObjectStateManager.
                        ChangeObjectState(customer, EntityState.Added);
                }
                else
                {
                    this.ObjectContext.Customers.AddObject(customer);
                }
            }
    
            public void UpdateCustomer(Customer currentCustomer)
            {
                this.ObjectContext.Customers.AttachAsModified(currentCustomer,
                    this.ChangeSet.GetOriginal(currentCustomer));
            }
    
            public void DeleteCustomer(Customer customer)
            {
                if ((customer.EntityState != EntityState.Detached))
                {
                    this.ObjectContext.ObjectStateManager.
                        ChangeObjectState(customer, EntityState.Deleted);
                }
                else
                {
                    this.ObjectContext.Customers.Attach(customer);
                    this.ObjectContext.Customers.DeleteObject(customer);
                }
            }
        }
    }
    
  8. Sulla barra dei menu, scegliere Compila, Compila NorthwindService.

  9. Dalla barra del menu, scegliere File, Salva tutto.

Creare un'applicazione di LightSwitch

Il passaggio finale consiste nel creare un'applicazione di LightSwitch che utilizzerà il servizio WCF RIA appena creato.

Per creare l'applicazione

  1. Nella barra del menu, scegliere File, Nuovo, Progetto.

  2. Nella finestra di dialogo Nuovo progetto, selezionare la categoria LightSwitch quindi scegliere Applicazione LightSwitch (Visual Basic) o il modello di progetto Applicazione LightSwitch (Visual C#).

  3. Nella casella di testo Nome, immettere Northwindquindi scegliere il pulsante OK.

  4. Sulla barra dei menu, scegliere File, Aggiungi, Progetto esistente.

  5. Selezionare il progetto NorthwindService quindi scegliere Apri.

  6. In Esplora soluzioni, nel progetto Northwind, aprire il menu di scelta rapida del nodo Origini dati e quindi scegliere Aggiungi origine dati.

  7. In Associazione guidata origine dati, selezionare l'icona Servizio RIA WCF.

  8. Scegliere il pulsante Avanti quindi scegliere il pulsante Aggiungi riferimento.

  9. Nella finestra di dialogo Gestione riferimenti, scegliere il pulsante Esplorare.

  10. In bin \ pubblicare la cartella per il progetto NorthWindService, scegliere il file NorthwindService.dll quindi scegliere il pulsante Aggiungi.

  11. Scegliere il pulsante OK per chiudere la finestra di dialogo e quindi scegliere il pulsante Avanti.

  12. Nella pagina Seleziona oggetti origine dati, selezionare la casella di controllo Entità quindi scegliere il pulsante Fine.

  13. In Esplora soluzioni, nel progetto NorthwindService, aprire il file App.Config.

  14. Nella sezione di ConnectionStrings, copiare la stringa di connessione che inizia con <add name’”NorthwindEntities”.

  15. In Esplora soluzioni, selezionare il progetto Northwind quindi scegliere Visualizzazione file dall'elenco nella barra degli strumenti.

  16. Espandere il nodo Server quindi scegliere Web.config.

  17. Nella sezione di ConnectionStrings, incollare la stringa di connessione copiato.

    A questo punto si dispone di un'origine dati perfettamente funzionanti che può inserire, aggiornare ed eliminare record utilizzando stored procedure.

Passaggi successivi

È possibile creare le schermate e logica di business di LightSwitch normalmente e rapidamente e facilmente a un'applicazione in esecuzione utilizzando stored procedure.

Vedere anche

Attività

Procedura: eseguire una stored procedure in LightSwitch

Altre risorse

Dati: informazioni sottostanti l'applicazione