Aracılığıyla paylaş


Nasıl yapılır: LightSwitch'te Saklı Yordam Yürütme

LightSwitchuygulamalar saklı yordamlar sql Server veritabanında server tier çağırarak çalıştırabilirsiniz.Komutları yürütme tetiklemek için İstemci katmanı oluşturabilirsiniz ve saklı yordamlar erişimi denetlemek için izinler tanımlayabilirsiniz.

Çoğu veritabanlarında, veritabanı etkileşimi daha hızlı bir çalıştırma, modüler programlama gibi başka tür bir avantaj olmadığı için saklı yordamlar kullanın ve ağ trafiği sınırlı.Aynı Bu avantajlar arasında saklı yordamları çalıştırma için uygulamak, LightSwitch uygulama.

Aşağıdaki yordamları AdventureWorks örnek veritabanındaki uspUpdateEmployeePersonalInfo depolanan yordamı kullanın:

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;

Farklı bir saklı yordamı yürütmek için adları ve parametreleri, eşleşecek şekilde değiştirmeniz gerekir.

Bir saklı yordamı yürütmek için

  1. İç veritabanında saklı yordam giriş parametrelerini içeren bir tablo oluşturun.

    1. İçinde Çözüm Gezgini, kısayol menüsünü açmak Veri kaynakları düğümü, ardından seçin Add Table.

    2. İçinde özelliklerini penceresinde, adı kutusuna girin UpdateEmployeePersonalInfoUpdate.

      [!NOT]

      Genellikle yerini alacak UpdateEmployeePersonalInfoOperation , bu tablo için bir saklı yordam kullanıldığını belirtmek için "işlem" gibi bir tanımlayıcı artı yürütmek istediğiniz saklı yordam adı.

    3. Aşağıdaki alanları tabloya ekleyin:

      Ad

      Tür

      Zorunlu

      EmployeeID

      Integer

      Evet

      Da NationalIDNumber

      String

      Evet

      Doğum tarihi

      Tarih saat

      Evet

      MaritalStatus

      String

      Evet

      Cinsiyet

      String

      Evet

      [!NOT]

      İçinde adı ve türü alanların, Değiştir her adlarını ve veri türlerini değerleriyle, saklı yordam içindeki parametre giriş ve tüm alanları olarak işaretlenmiş olması gerekir.

  2. Bir başvuru ekleyin ConfigurationManager sınıf.

    1. İçinde Çözüm Gezgini, seçim Tüm dosyaları göster araç çubuğu düğmesi.

    2. Açmak için kısayol menüsünü Server düğümü ve sonra seçin Add Reference.

    3. İçinde Reference Manager iletişim kutusunda, genişletin derlemeler düğümü, seçin Framework düğümünü seçin ve System.Configuration onay kutusu.

  3. İçinde Kod yazma listesinde, seçim ekleme yöntemi (Bu durumda, UpdateEmployeePersonalInfoOperations_Inserting yöntemi).

  4. Aşağıdaki örneğe benzer kodu ekleyin:

    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();
        }
    }
    

    Bu kod oluşturur bir SqlConnection nesnesi ve bağlantı dizesi web.config dosyasından alır.Daha sonra kod oluşturur bir SqlCommand gerekli komut metni nesnesiyle parametre değerlerini ekler ve komutu yürütür.Son olarak DiscardChanges olarak adlandırılır; değişiklikleri kaydetmek kullanmadığınız UpdateEmployeePersonalInfoOperation tablo.

    [!NOT]

    Değiştirmeniz gereken DataWorkspace adını parametre adları ve değerleri ile kendi için saklı yordamı.

Bir ekrandan saklı yordamı çağırmak için

  1. İçinde Ekran Tasarımcısı, kısayol menüsünü açmak Ekran komut çubuğu düğümü ve sonra seçin Ekle düğmesi.

  2. İçinde Ekle düğmesi iletişim kutusunda, seçim Yeni bir yöntem seçenek düğmesi.

  3. İçinde adı metin kutusuna girin UpdateEmployeeInfo.

    [!NOT]

    Saklı yordamınız ne yaptığını tanımlayan bir ad yerine kullanabilirsiniz.

  4. İçinde Ekran Tasarımcısı, düğme düğüm için kısayol menüsünü açın ve sonra seçin Yürütme kodu Düzenle.

  5. Aşağıdaki örneğe benzer kodu ekleyin:

    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();
    }
    

    Bu kod ilk olarak oluşturur bir DataWorkspace ve daha sonra oluşturur bir UpdateEmployeePersonalInfoOperation kullanarak yeni oluşturulan DataWorkspace's ApplicationData.Operasyon için değerler atanır ve işlem çağıran çağrıldığında SaveChanges.Bu adımı orta bağlayıcıda tetikler UpdateEmployeePersonalInfoOperations_Inserting yöntemi veritabanında saklı yordam çalıştırılır.

    İpucuİpucu

    Saklı yordam çağrısı yaptığınızda değişiklikleri yansıtmak için ekran verilerin yenilenmesi değildir.Ekranı yenilemek için ya da arama yapabilirsiniz Employees.Refresh() veya DataWorkspace.AdventureWorksData.Employees_Single(operation.EmployeeID) düğmenin sonunda Execute yöntem.Dikkat edin Employees.Refresh() tüm kayıtları yeniler ve Employees_Single , belirttiğiniz öğe yeniler.

Bir saklı yordam için izinleri tanımlamak için

  1. İçinde Çözüm Gezgini, kısayol menüsünü açmak özelliklerini düğümü ve sonra seçin açmak.

  2. Üzerinde Erişim denetimi sekmesinde, önceden belirtilmiş olması durumunda kullanılacak kimlik doğrulama türünü seçin.

  3. Seçin < yeni izin Ekle > bağlantısını ve sonra girin UpdatePersonalInfo.

    [!NOT]

    Saklı yordamınız ne yaptığını tanımlayan bir ad yerine kullanabilirsiniz.

  4. İçinde Çözüm Gezgini, saklı yordam tablonuz için kısayol menüsünü açın ve sonra seçin açık.

  5. İçinde Kod yazma listesinde, seçim CanInsert yöntem.

  6. Aşağıdaki örneğe benzer kodu ekleyin:

    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);
    }
    

Ayrıca bkz.

Görevler

İzlenecek yol: Saklı Yordamları Kullanarak Kayıtları Güncelleştirme

LightSwitch Kimlik Doğrulaması ve Yetkilendirme

Kavramlar

Kodda ilgili verileri nesneleriyle çalışma