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
Sulla barra dei menu, scegliere Visualizza, Esplora oggetti di SQL Server.
Nella finestra Esplora oggetti di SQL Server, espandere il nodo del database NORTHWIND quindi scegliere Programmazione.
Espandere il nodo Programmazione quindi scegliere Stored procedure.
Aprire il menu di scelta rapida per Stored proceduree quindi scegliere Aggiungi nuova stored procedure.
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)
Nella finestra di dialogo Anteprima aggiornamenti database, scegliere il pulsante Aggiorna database.
La stored procedure InsertCustomer viene aggiunta al database.
Aprire il menu di scelta rapida per Stored proceduree quindi scegliere Aggiungi nuova stored procedure.
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
Nella finestra di dialogo Anteprima aggiornamenti database, scegliere il pulsante Aggiorna database.
La stored procedure UpdateCustomer viene aggiunta al database.
Aprire il menu di scelta rapida per Stored proceduree quindi scegliere Aggiungi nuova stored procedure.
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
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
Nella barra del menu, scegliere File, Nuovo, Progetto.
Nella finestra di dialogo Nuovo progetto, espandere Visual Basic o il nodo Visual C# e quindi scegliere il modello Libreria di classi.
Nella casella di testo Nome, immettere NorthwindServicequindi scegliere il pulsante OK.
In Esplora soluzioni, scegliere dal menu di scelta rapida del nodo MyProject quindi scegliere Apri.
Nell'elenco Framework di destinazione, scegliere .NET Framework 4.
In Esplora soluzioni, scegliere dal menu di scelta rapida per NorthwindService, scegliere Aggiungiquindi scegliere Nuovo elemento.
Nella finestra di dialogo Aggiungi nuovo elemento, scegliere il modello ADO.NET Entity Data Model.
Nella casella di testo Nome, immettere Northwind.edmxquindi scegliere il pulsante Aggiungi.
In Procedura guidata Entity Data Model, selezionare l'icona Genera da database e quindi scegliere il pulsante Avanti.
Nella pagina Seleziona connessione dati, scegliere il pulsante Nuova connessione.
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# È possibile trovare il nome in Esplora oggetti di SQL Server.
Nella casella di testo Seleziona o immetti nome di database, immettere Northwind.
Scegliere il pulsante OK quindi scegliere il pulsante Avanti.
Nella pagina Scegli impostazioni e oggetti di database, espandere il nodo Tabelle quindi selezionare la casella di controllo Clienti.
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.
Aprire il menu di scelta rapida per l'entità Cliente quindi scegliere Mapping stored procedure.
Nella finestra Dettagli sul mapping, <Select Insert Function> nell'elenco, scegliere InsertCustomer.
<Select Update Function> Nell'elenco, scegliere UpdateCustomer.
<Select Delete Function> Nell'elenco, scegliere DeleteCustomer.
Chiudere la finestra di progettazione Northwind.edmx.
In Esplora soluzioni, scegliere il pulsante della barra degli strumenti Mostra tutti i file.
Espandere il nodo per Northwind.edmxquindi eliminare i file Northwind.Context.tt e Northwind.tt.
Aprire il file Northwind.edmx ed evidenziare lo spazio vuoto dall'entità Cliente.
Nella finestra Proprietà, modificare il valore della proprietà Strategia di generazione del codice a Predefinite.
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
In Esplora soluzioni, scegliere dal menu di scelta rapida del progetto NorthwindService, scegliere Aggiungiquindi scegliere Nuovo elemento.
Nella finestra di dialogo Aggiungi nuovo elemento, scegliere il modello Classe di servizio del dominio domainservice.
Nella casella di testo Nome, immettere NorthwindServicequindi scegliere il pulsante Aggiungi.
Nella finestra di dialogo Aggiungi una nuova classe DomainService, scegliere il pulsante OK.
In Esplora soluzioni, scegliere dal menu di scelta rapida per Northwind Servicequindi scegliere Aggiungi riferimento.
Scegliere il nodo Estensioni, selezionare la casella di controllo System.ServiceModel.DomainServices.EntityFramework quindi scegliere il pulsante OK.
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); } } } }
Sulla barra dei menu, scegliere Compila, Compila NorthwindService.
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
Nella barra del menu, scegliere File, Nuovo, Progetto.
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#).
Nella casella di testo Nome, immettere Northwindquindi scegliere il pulsante OK.
Sulla barra dei menu, scegliere File, Aggiungi, Progetto esistente.
Selezionare il progetto NorthwindService quindi scegliere Apri.
In Esplora soluzioni, nel progetto Northwind, aprire il menu di scelta rapida del nodo Origini dati e quindi scegliere Aggiungi origine dati.
In Associazione guidata origine dati, selezionare l'icona Servizio RIA WCF.
Scegliere il pulsante Avanti quindi scegliere il pulsante Aggiungi riferimento.
Nella finestra di dialogo Gestione riferimenti, scegliere il pulsante Esplorare.
In bin \ pubblicare la cartella per il progetto NorthWindService, scegliere il file NorthwindService.dll quindi scegliere il pulsante Aggiungi.
Scegliere il pulsante OK per chiudere la finestra di dialogo e quindi scegliere il pulsante Avanti.
Nella pagina Seleziona oggetti origine dati, selezionare la casella di controllo Entità quindi scegliere il pulsante Fine.
In Esplora soluzioni, nel progetto NorthwindService, aprire il file App.Config.
Nella sezione di ConnectionStrings, copiare la stringa di connessione che inizia con <add name’”NorthwindEntities”.
In Esplora soluzioni, selezionare il progetto Northwind quindi scegliere Visualizzazione file dall'elenco nella barra degli strumenti.
Espandere il nodo Server quindi scegliere Web.config.
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