Porady: wykonywanie w programie LightSwitch procedury przechowywanej
LightSwitchaplikacje można wykonać procedur przechowywanych w bazie danych programu SQL Server, wzywając ich z poziomu serwera.Można tworzyć przy użyciu polecenia, w warstwie klienta, aby wyzwolić wykonanie i można zdefiniować uprawnienia do kontrolowania, kto ma dostęp do procedur przechowywanych.
Wielu istniejących baz danych używać procedur przechowywanych, ponieważ mają zalety w stosunku do innych rodzajów interakcji bazy danych, takim jak programowanie modułowa, szybsze wykonywanie i zmniejszyć ruch w sieci.Do wspomnianych zalet tego samego stosuje się do wykonywania procedury przechowywanej z Twojej LightSwitch aplikacji.
Poniższe procedury należy uspUpdateEmployeePersonalInfo procedura przechowywana z przykładowej bazy danych 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;
Aby wykonać inną procedurę składowaną, należy zmienić nazwy i parametry do niego.
Aby wykonać procedurę przechowywaną
Utwórz tabelę w wewnętrznej bazy danych, która zawiera parametry wejściowe dla procedury przechowywanej.
W Solution Explorer, otwórz menu skrótów dla Źródła danych węzła, a następnie wybierz polecenie Dodaj tabelę.
W Właściwości okno, w Nazwa wprowadź UpdateEmployeePersonalInfoUpdate.
[!UWAGA]
Zazwyczaj zastąpi UpdateEmployeePersonalInfoOperation z nazwą procedury przechowywanej, którą chcesz wykonać plus identyfikator, taki jak "Działanie" oznacza, że ta tabela jest używana dla procedury przechowywanej.
Do tabeli, należy dodać następujące pola:
Nazwa
Typ
Wymagane
Pole IDPracownika
Liczba całkowita
Tak
NationalIDNumber
Ciąg
Tak
Data urodzenia
Data Godzina
Tak
MaritalStatus
Ciąg
Tak
Płeć
Ciąg
Tak
[!UWAGA]
W Nazwa i typu pola, Zastąp wartości za pomocą nazwy i typy danych dla każdego parametru w Twoją procedurę składowaną wejściowego i zapewnienia, że wszystkie pola są oznaczone jako wymagane.
Dodaj odwołanie do ConfigurationManager klasy.
W Solution Explorer, wybierz polecenie Pokaż wszystkie pliki przycisk paska narzędzi.
Otwarcie menu skrótów dla serwera węzła, a następnie wybierz polecenie Dodaj odwołanie.
W Reference Manager okno dialogowe rozwiń zespoły węzeł, wybierz polecenie Framework węzła, a następnie wybierz System.Configuration pole wyboru.
W Pisanie kodu listy, wybierz polecenie Wstawianie metody (w tym wypadku UpdateEmployeePersonalInfoOperations_Inserting metoda).
Dodaj kod, przypominająca poniższy przykład:
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(); } }
Kod ten tworzy SqlConnection object i ciąg połączenia są pobierane z pliku web.config.Następnie tworzony SqlCommand obiekt z tekstem wymagane polecenie dodaje wartości parametrów i wykonuje polecenie.Na koniec DiscardChanges nazywa się; nie musisz zapisać zmiany w UpdateEmployeePersonalInfoOperation tabeli.
[!UWAGA]
Należy zastąpić DataWorkspace nazwy oraz nazwy parametrów i wartości z wartościami do własnego procedury przechowywanej.
Aby wywołać procedury przechowywanej z ekranu
W Projektanta ekranu, otwórz menu skrótów dla Pasek poleceń ekranu węzła, a następnie wybierz polecenie Przycisk Dodaj.
W Przycisk Dodaj okno dialogowe Wybierz Nowa metoda przycisku opcji.
W Nazwa tekst wprowadź UpdateEmployeeInfo.
[!UWAGA]
Można zastąpić nazwę, która opisuje, co robi Twoją procedurę składowaną.
W Projektanta ekranu, otwórz menu skrótów dla węzła przycisk, a następnie wybierz Edytuj wykonanie kodu.
Dodaj kod, przypominająca poniższy przykład:
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(); }
Ten kod najpierw tworzy DataWorkspace , a następnie tworzy UpdateEmployeePersonalInfoOperation przy użyciu nowo utworzony DataWorkspace ApplicationData.Przypisano odpowiednie wartości dla operacji, a operacja została wywołana przez wywołanie SaveChanges.W tym kroku wyzwala warstwa środkowa UpdateEmployeePersonalInfoOperations_Inserting metodę, która wykonuje procedura przechowywana w bazie danych.
Porada Dane ekranu nie jest odświeżana zgodnie ze zmianami przy wywoływaniu procedury przechowywanej.Aby odświeżyć ekran, można albo zadzwoń Employees.Refresh() lub DataWorkspace.AdventureWorksData.Employees_Single(operation.EmployeeID) na końcu przycisku Execute metoda.Należy zauważyć, że Employees.Refresh() odświeża wszystkie rekordy, a Employees_Single odświeża tylko dla elementu, który określisz.
Aby zdefiniować uprawnienia dla procedury przechowywanej
W Solution Explorer, otwórz menu skrótów dla Właściwości węzła, a następnie wybierz polecenie Otwórz.
Na Kontroli dostępu tab, wybrać typ uwierzytelniania, jeśli nie zostanie określona.
Wybierz polecenie < Dodaj nowe uprawnienie > łącze, a następnie i wprowadź UpdatePersonalInfo.
[!UWAGA]
Można zastąpić nazwę, która opisuje, co robi Twoją procedurę składowaną.
W Solution Explorer, otwórz menu skrótów dla procedury przechowywanej tabeli, a następnie wybierz Otwórz.
W Pisanie kodu listy, wybierz polecenie CanInsert metoda.
Dodaj kod, przypominająca poniższy przykład:
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); }
Zobacz też
Zadania
Wskazówki: aktualizowanie rekordów przy użyciu procedur przechowywanych
Uwierzytelnianie i autoryzacja w programie LightSwitch