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
İç veritabanında saklı yordam giriş parametrelerini içeren bir tablo oluşturun.
İçinde Çözüm Gezgini, kısayol menüsünü açmak Veri kaynakları düğümü, ardından seçin Add Table.
İç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ı.
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.
Bir başvuru ekleyin ConfigurationManager sınıf.
İçinde Çözüm Gezgini, seçim Tüm dosyaları göster araç çubuğu düğmesi.
Açmak için kısayol menüsünü Server düğümü ve sonra seçin Add Reference.
İçinde Reference Manager iletişim kutusunda, genişletin derlemeler düğümü, seçin Framework düğümünü seçin ve System.Configuration onay kutusu.
İçinde Kod yazma listesinde, seçim ekleme yöntemi (Bu durumda, UpdateEmployeePersonalInfoOperations_Inserting yöntemi).
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
İç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.
İçinde Ekle düğmesi iletişim kutusunda, seçim Yeni bir yöntem seçenek düğmesi.
İçinde adı metin kutusuna girin UpdateEmployeeInfo.
[!NOT]
Saklı yordamınız ne yaptığını tanımlayan bir ad yerine kullanabilirsiniz.
İç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.
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
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
İçinde Çözüm Gezgini, kısayol menüsünü açmak özelliklerini düğümü ve sonra seçin açmak.
Üzerinde Erişim denetimi sekmesinde, önceden belirtilmiş olması durumunda kullanılacak kimlik doğrulama türünü seçin.
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.
İçinde Çözüm Gezgini, saklı yordam tablonuz için kısayol menüsünü açın ve sonra seçin açık.
İçinde Kod yazma listesinde, seçim CanInsert yöntem.
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