Sdílet prostřednictvím


Postupy: Provedení uložené procedury v aplikaci LightSwitch

LightSwitchaplikace lze spustit uložené procedury v databázi serveru SQL Server voláním z úrovně serveru.Můžete vytvořit příkazy na vrstvě klienta spustit spuštění a definovat oprávnění určit, kdo má přístup k uložené procedury.

Mnoho existujících databází pomocí uložené procedury, protože mohou být výhodnější, než jiné typy interakce databáze například modulární programování, rychlejší spuštění a snižuje provoz v síti.Tyto stejné výhody platí pro provádění uložené procedury z vaší LightSwitch aplikace.

Následující postupy pomocí uspUpdateEmployeePersonalInfo uložené procedury z ukázkové databáze AdventureWorks:

CREATE PROCEDURE [HumanResources].[uspUpdateEmployeePersonalInfo]
@EmployeeID [int], 
@NationalIDNumber [nvarchar](15), 
@BirthDate [datetime], 
@MaritalStatus [nchar](1), 
@Gender [nchar](1)
WITH EXECUTE AS CALLER
AS
BEGIN
SET NOCOUNT ON;
UPDATE [HumanResources].[Employee] 
SET [NationalIDNumber] = @NationalIDNumber 
,[BirthDate] = @BirthDate 
,[MaritalStatus] = @MaritalStatus 
,[Gender] = @Gender 
WHERE [EmployeeID] = @EmployeeID;
END;

K provedení různých uloženou proceduru, musíte změnit názvy a parametry odpovídající.

Chcete-li spustit uložené procedury

  1. Vytvoření tabulky v vnitřní databáze, která obsahuje vstupní parametry pro uloženou proceduru.

    1. V Průzkumníku, otevřete místní nabídku pro Zdroje dat uzlu a pak zvolte Přidat tabulku.

    2. V Vlastnosti okno, v jméno zadejte UpdateEmployeePersonalInfoUpdate.

      [!POZNÁMKA]

      Obvykle nahradí UpdateEmployeePersonalInfoOperation s názvem uložené procedury, která má být proveden plus identifikátor, například "Operace" označuje, že tato tabulka se používá pro uloženou proceduru.

    3. Přidejte následující pole v tabulce:

      Název

      Type

      Požadováno

      Číslo zaměstnance

      Integer

      Ano

      NationalIDNumber

      Řetězec

      Ano

      Datum narození

      Datum čas

      Ano

      MaritalStatus

      Řetězec

      Ano

      Pohlaví

      Řetězec

      Ano

      [!POZNÁMKA]

      V název a typu pole nahradit hodnoty s názvy a datové typy pro každý vstupní parametr v uložené proceduře a zajistí, že všechna pole jsou označena jako požadované.

  2. Přidat odkaz ConfigurationManager třídy.

    1. V Průzkumníku, zvolte Zobrazit všechny soubory tlačítko na panelu nástrojů.

    2. Otevření místní nabídky pro Server uzlu a pak zvolte Přidat odkaz na.

    3. V Reference Manager dialogové okno pole, rozbalte položku sestavení uzel, zvolte Framework uzel a pak vyberte System.Configuration políčko.

  3. V Psát kód seznam, zvolte Vložení metody (v tomto případě UpdateEmployeePersonalInfoOperations_Inserting metoda).

  4. Přidejte kód, který se podobá následujícímu příkladu:

    Imports System.Configuration
    Imports System.Data
    Imports System.Data.SqlClient
    
    Namespace LightSwitchApplication
        Public Class ApplicationDataService
            Private Sub UpdateEmployeePersonalInfoOperations_Inserting(entity As UpdateEmployeePersonalInfoOperation)
                Using connection = New SqlConnection
                    Dim connectionStringName = Me.DataWorkspace.AdventureWorksData.Details.Name
                    connection.ConnectionString =
                        ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString
    
                    Dim procedure = "HumanResources.uspUpdateEmployeePersonalInfo"
                    Using command = New SqlCommand(procedure, connection)
                        command.CommandType = CommandType.StoredProcedure
    
                        command.Parameters.Add(
                            New SqlParameter("@EmployeeID", entity.EmployeeID))
                        command.Parameters.Add(
                            New SqlParameter("@NationalIDNumber", entity.NationalIDNumber))
                        command.Parameters.Add(
                            New SqlParameter("@BirthDate", entity.BirthDate))
                        command.Parameters.Add(
                            New SqlParameter("@MaritalStatus", entity.MaritalStatus))
                        command.Parameters.Add(
                            New SqlParameter("@Gender", entity.Gender))
    
                        connection.Open()
                        command.ExecuteNonQuery()
                    End Using
                End Using
    
                Me.Details.DiscardChanges()
            End Sub
        End Class
    End Namespace
    
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    
    public partial class ApplicationDataService
    {
        partial void UpdateEmployeePersonalInfoOperations_Inserting(UpdateEmployeePersonalInfoOperation entity)
        {
            using (SqlConnection connection = new SqlConnection())
            {
                string connectionStringName = this.DataWorkspace.AdventureWorksData.Details.Name;
                connection.ConnectionString =
                    ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
    
                string procedure = "HumanResources.uspUpdateEmployeePersonalInfo";
                using (SqlCommand command = new SqlCommand(procedure, connection))
                {
                    command.CommandType = CommandType.StoredProcedure;
    
                    command.Parameters.Add(
                        new SqlParameter("@EmployeeID", entity.EmployeeID));
                    command.Parameters.Add(
                        new SqlParameter("@NationalIDNumber", entity.NationalIDNumber));
                    command.Parameters.Add(
                        new SqlParameter("@BirthDate", entity.BirthDate));
                    command.Parameters.Add(
                        new SqlParameter("@MaritalStatus", entity.MaritalStatus));
                    command.Parameters.Add(
                        new SqlParameter("@Gender", entity.Gender));
    
                    connection.Open();
                    command.ExecuteNonQuery();
                }
            }
    
            this.Details.DiscardChanges();
        }
    }
    

    Tento kód vytvoří SqlConnection objektu a získá připojovací řetězec ze souboru web.config.Kód poté vytvoří SqlCommand objekt s textem požadovaný příkaz přidá hodnoty parametrů a provede příkaz.Nakonec DiscardChanges se nazývá; není třeba ukládat změny v UpdateEmployeePersonalInfoOperation tabulky.

    [!POZNÁMKA]

    Je třeba nahradit DataWorkspace jméno a názvy parametrů a hodnoty s hodnotami pro své vlastní uložené procedury.

Chcete-li vyvolat uložená procedura z obrazovky

  1. V Návrhář obrazovky, otevřete místní nabídku pro Obrazovky příkazového řádku uzlu a pak zvolte Přidat tlačítko.

  2. V Přidat tlačítko dialogové okno pole, zvolte Novou metodu přepínač.

  3. V jméno text zadejte UpdateEmployeeInfo.

    [!POZNÁMKA]

    Můžete použít název, který popisuje, co dělá uložené procedury.

  4. V Návrhář obrazovky, otevřete místní nabídku pro uzel tlačítko a poté zvolte Upravit kód spustit.

  5. Přidejte kód, který se podobá následujícímu příkladu:

    Private Sub UpdateEmployeeInfo_Execute()
        Dim dataWorkspace = New DataWorkspace
        Dim employee = Me.Employees.SelectedItem
    
        Dim operation =
            dataWorkspace.ApplicationData.UpdateEmployeePersonalInfoOperations.AddNew()
        operation.EmployeeID = employee.EmployeeID
        operation.NationalIDNumber = employee.NationalIDNumber
        operation.BirthDate = employee.BirthDate
        operation.MaritalStatus = employee.MaritalStatus
        operation.Gender = employee.Gender
    
        dataWorkspace.ApplicationData.SaveChanges()
    End Sub
    
    partial void UpdateEmployeeInfo_Execute()
    {
        DataWorkspace dataWorkspace = new DataWorkspace();
        Employee employee = this.Employees.SelectedItem;
    
        UpdatePersonalInfoOperation operation = 
            dataWorkspace.ApplicationData.UpdateEmployeePersonalInfoOperations.AddNew();
        operation.EmployeeID = employee.EmployeeID;
        operation.NationalIDNumber = employee.NationalIDNumber;
        operation.BirthDate = employee.BirthDate;
        operation.MaritalStatus = employee.MaritalStatus;
        operation.Gender = employee.Gender;
    
        dataWorkspace.ApplicationData.SaveChanges();
    }
    

    Tento kód nejprve vytvoří DataWorkspace a vytvoří UpdateEmployeePersonalInfoOperation pomocí nově vytvořené DataWorkspace ApplicationData.Jsou přiřazeny hodnoty pro operace a operace je vyvolána voláním SaveChanges.Tento krok spustí střední vrstvy UpdateEmployeePersonalInfoOperations_Inserting metodu, která provede uloženou proceduru v databázi.

    Tip

    Data obrazovky není aktualizována tak, aby odrážely změny při volání uložené procedury.Chcete-li aktualizovat obrazovku, můžete buď volání Employees.Refresh() nebo DataWorkspace.AdventureWorksData.Employees_Single(operation.EmployeeID) na konci na tlačítko Execute metoda.Všimněte si, že Employees.Refresh() obnoví všechny záznamy a Employees_Single aktualizuje pouze zboží, které určíte.

Chcete-li definovat oprávnění pro uložené procedury

  1. V Průzkumníku, otevřete místní nabídku pro Vlastnosti uzlu a pak zvolte otevřete.

  2. V Řízení přístupu , vyberte typ ověřování použít, pokud je již nejsou určeny.

  3. Zvolte < přidat nové oprávnění > odkaz a poté a zadejte UpdatePersonalInfo.

    [!POZNÁMKA]

    Můžete použít název, který popisuje, co dělá uložené procedury.

  4. V Průzkumníku, otevřete místní nabídku pro tabulky uložené procedury a potom zvolte otevřete.

  5. V Psát kód seznam, zvolte CanInsert metoda.

  6. Přidejte kód, který se podobá následujícímu příkladu:

    Private Sub UpdateEmployeePersonalInfoOperations_CanInsert(ByRef result As Boolean)
        result = Me.Application.User.HasPermission(Permissions.UpdatePersonalInfo)
    End Sub
    
    partial void UpdateEmployeePersonalInfoOperations_CanInsert(ref bool result)
    {
        result = this.Application.User.HasPermission(Permissions.UpdatePersonalInfo);
    }
    

Viz také

Úkoly

Postupy: Aktualizace záznamů pomocí uložené procedury

Ověřování a autorizace v aplikacích LightSwitch

Koncepty

Práce s objekty související s daty v kódu