Condividi tramite


Procedura dettagliata: Uso di stored procedure

Non è possibile chiamare una stored procedure in un database SQL Server direttamente da LightSwitch, ma è possibile creare una tabella locale nell'app LightSwitch che contiene i parametri per la stored procedure e chiamare quindi la stored procedure da un evento a livello del server. Questa procedura dettagliata illustra come inserire record dei clienti in un database SQL tramite stored procedure.

Molti amministratori di database non consentono l'accesso diretto alle tabelle, ma espongono visualizzazioni di sola lettura e forniscono stored procedure per inserire, aggiornare ed eliminare record. LightSwitch non riconosce le stored procedure, quindi qualsiasi database che fa affidamento su di esse per aggiornare i record potrebbe sembrare inizialmente inutilizzabile. Con qualche operazione aggiuntiva è possibile usare questi database da LightSwitch.

Prerequisiti

Questa procedura dettagliata usa il database di esempio Northwind.

Creare una stored procedure

Nella maggior parte dei casi è possibile accedere a stored procedure già esistenti in un database. Il database Northwind non ha la stored procedure necessaria per inserire i record cliente, quindi è necessario aggiungerla.

Per aggiungere una stored procedure

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

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

  3. Espandere il nodo Programmabilità, quindi scegliere Stored procedure.

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

  5. In Editor del codice, sostituire il contenuto con il codice Transact-SQL seguente, 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.

Creare un'applicazione LightSwitch

In questo passaggio verrà creata un'app per chiamare la stored procedure e aggiungere nuovi clienti al database Northwind.

Per creare l'app

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

  2. Nella finestra di dialogo Nuovo progetto espandere il nodo Visual Basic o Visual C#, quindi fare clic sul modello Applicazione HTML LightSwitch.

  3. Nella casella di testo Nome immettere NorthwindSP, quindi fare clic su OK.

Per aggiungere un'origine dati

  1. In Esplora soluzioni aprire il menu di scelta rapida per il nodo Origini dati e scegliere Aggiungi origine dati.

  2. In Associazione guidata origine dati scegliere Database, quindi fare clic su Avanti.

  3. Nella finestra di dialogo Proprietà connessione immettere le informazioni di connessione per il database Northwind, quindi fare clic su OK.

  4. Nella pagina Seleziona oggetti di database espandere il nodo Tabelle, selezionare la casella di controllo Clienti, quindi scegliere Fine.

Per aggiungere una tabella locale

  1. In Esplora soluzioni aprire il menu di scelta rapida per il nodo Origini dati e scegliere Aggiungi tabella.

  2. Nella finestra Proprietà scegliere la proprietà Nome e immettere NewCustomer.

  3. In Entity Designer aggiungere i seguenti campi:

    Nome

    Tipo

    Obbligatorio

    CustomerID

    String

    CompanyName

    String

    ContactName

    String

    ContactTitle

    String

    Address

    String

    City

    String

    Region

    String

    PostalCode

    String

    Paese

    String

    Telefono

    Numero di telefono

    Fax

    Numero di telefono

    Si noti che tutti i campi sono obbligatori, perché tutti i parametri della stored procedure richiedono valori. Si noti anche che il tipo di dati per i campi Telefono e Fax sono Phone Number. Anche se sono memorizzati nel database come nvarchar, è possibile usufruire dei tipi aziendali personalizzati di LightSwitch a livello client.

Per aggiungere una schermata

  1. Nella barra Prospettiva di Entity Designer scegliere HTMLClient.

  2. Nella barra degli strumenti scegliere il pulsante Schermata.

  3. Nella finestra di dialogo Aggiungi nuova schermata scegliere il modello Set di schermate comuni; nella casella di testo Nome set schermate immettere Clienti e nell'elenco Dati della schermata scegliere NewCustomer, quindi fare clic su OK.

Per chiamare la stored procedure

  1. In Esplora soluzioni aprire il menu di scelta rapida per il nodo NorthwindSP.Server e scegliere Aggiungi, Riferimento.

  2. Nella finestra di dialogo Aggiungi riferimento selezionare la casella di controllo System.Configuration, quindi scegliere il pulsante OK.

  3. In Esplora soluzioni aprire il menu di scelta rapida per il nodo NewCustomer.lsml e scegliere Apri.

  4. Nella barra Prospettiva di Entity Designer scegliere Server.

  5. Nella barra degli strumenti espandere l'elenco Scrivi codice e scegliere NewCustomers_Inserting.

  6. In Editor del codice sostituire il contenuto esistente con il codice seguente:

    Imports System.Configuration
    Imports System.Data
    Imports System.Data.SqlClient
    Namespace LightSwitchApplication
    
        Public Class ApplicationDataService
    
            Private Sub NewCustomers_Inserting(entity As NewCustomer)
                Using connection = New SqlConnection
                    Dim connectionStringName = Me.DataWorkspace.NorthwindData.Details.Name
                    connection.ConnectionString = ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString
    
                    Dim procedure = "dbo.InsertCustomer"
                    Using command = New SqlCommand(procedure, connection)
                        command.CommandType = CommandType.StoredProcedure
    
                        command.Parameters.Add(
                            New SqlParameter("@CustomerID", entity.CustomerID))
                        command.Parameters.Add(
                            New SqlParameter("@CompanyName", entity.CompanyName))
                        command.Parameters.Add(
                            New SqlParameter("@ContactName", entity.ContactName))
                        command.Parameters.Add(
                            New SqlParameter("@ContactTitle", entity.ContactTitle))
                        command.Parameters.Add(
                            New SqlParameter("@Address", entity.Address))
                        command.Parameters.Add(
                            New SqlParameter("@City", entity.City))
                        command.Parameters.Add(
                            New SqlParameter("@Region", entity.Region))
                        command.Parameters.Add(
                            New SqlParameter("@PostalCode", entity.PostalCode))
                        command.Parameters.Add(
                            New SqlParameter("@Country", entity.Country))
                        command.Parameters.Add(
                            New SqlParameter("@Phone", entity.Phone))
                        command.Parameters.Add(
                            New SqlParameter("@Fax", entity.Fax))
    
                        connection.Open()
                        command.ExecuteNonQuery()
                    End Using
    
    
                End Using
            End Sub
        End Class
    
    End Namespace
    
    using Microsoft.VisualBasic;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data;
    using System.Diagnostics;
    using System.Configuration;
    using System.Data.SqlClient;
    namespace LightSwitchApplication
    {
    
    public class ApplicationDataService
    {
    
    private void NewCustomers_Inserting(NewCustomer entity)
    {
    using (connection == new SqlConnection()) {
    dynamic connectionStringName = this.DataWorkspace.NorthwindData.Details.Name;
    connection.ConnectionString = ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString;
    
    dynamic procedure = "dbo.InsertCustomer";
    using (command == new SqlCommand(procedure, connection)) {
    command.CommandType = CommandType.StoredProcedure;
    
    command.Parameters.Add(new SqlParameter("@CustomerID", entity.CustomerID));
    command.Parameters.Add(new SqlParameter("@CompanyName", entity.CompanyName));
    command.Parameters.Add(new SqlParameter("@ContactName", entity.ContactName));
    command.Parameters.Add(new SqlParameter("@ContactTitle", entity.ContactTitle));
    command.Parameters.Add(new SqlParameter("@Address", entity.Address));
    command.Parameters.Add(new SqlParameter("@City", entity.City));
    command.Parameters.Add(new SqlParameter("@Region", entity.Region));
    command.Parameters.Add(new SqlParameter("@PostalCode", entity.PostalCode));
    command.Parameters.Add(new SqlParameter("@Country", entity.Country));
    command.Parameters.Add(new SqlParameter("@Phone", entity.Phone));
    command.Parameters.Add(new SqlParameter("@Fax", entity.Fax));
    
    connection.Open();
    command.ExecuteNonQuery();
    }
    
    
    }
    }
    }
    
    }
    

    Quando viene inserito un nuovo record nella tabella NewCustomers, questo codice viene eseguito, aprendo una connessione al database Northwind ed eseguendo le stored procedure InsertCustomer, in modo da fornire i valori nell'entità NewCustomer come parametri alla stored procedure.

Per eseguire il test dell'app

  1. In Editor del codice impostare un punto di interruzione nel metodo NewCustomers_Inserting.

  2. Eseguire l'app e nella schermata CustomersSet scegliere il pulsante Aggiungi.

  3. Nella schermata Clienti riempire tutti i campi e scegliere il pulsante Salva.

    Si noti che il punto di interruzione è premuto, dimostrando il funzionamento del codice; premere F5 per continuare. Se si apre la tabella Customers del database Northwind, verrà visualizzato il nuovo record di cliente.

Passaggi successivi

È possibile creare schermate e la logica di business di LightSwitch come di consueto e creare in modo semplice e rapido un'applicazione funzionante tramite le stored procedure.

Vedere anche

Attività

Procedura: eseguire una stored procedure in LightSwitch

Altre risorse

Dati: informazioni sottostanti l'applicazione