Nasıl yapılır: veri doğrulama
Düzgün biçimlendirilmiş verinin veri kaynağına yazıldığından emin olmak için doğrulama kuralları 'nı, bir varlığa ya da tabloya uygulayabilirsiniz.Geçerlilik kuralı, uygulamanızdaki verilerle uyum sağlaması gereken bir koşul veya kısıttır.LightSwitch bilgisinin içinde bir varlığa veya tabloya bir ya da daha fazla doğrulama kuralı ekleyebilirsiniz.Bir kullanıcı veri ekler veya değiştirirse ve bu veri doğrulama kuralları ile uyumlu değilse, LightSwitch bir hata görüntüler.Kullanıcı veriyi kaydetmeden önce, doğrulama hatası giderilmiş olmalıdır.
Doğrulama hata iletisi aşağıdaki çizimde gösterilmektedir.
LightSwitch bilgisi birçok yerleşik doğrulama kuralı içerir.Bu kuralları yapılandırabilir ve herhangi bir kod yazmadan bunları bir varlığa veya bir tabloya uygulayabilirsiniz.Özel doğrulama kurallarını tanımlamak için kod da kullanabilirsiniz.
Bu konu aşağıdaki bölümleri içerir:
Bir Alana Önceden Tanımlanmış Doğrulama Kuralları Uygulama
Bir Alana Özel Doğrulama Kuralları Uygulama
Ekrandaki bir Veriye Özel Doğrulama Kuralları Uygulama
Veri Kaydedildiği Sırada Çalışan Doğrulama Kuralları Uygulama
İlgili video gösterimi için Nasıl Yaparım: LightSwitch Uygulaması'ndaki doğrulama ve hesaplanmış alanlar için iş kuralları yazılsın mı?.
Bir Alana Önceden Tanımlanmış Doğrulama Kuralları Uygulama
LightSwitch bilgisi, herhangi bir özel kod yazmadan kullanabileceğiniz bir çok yerleşik doğrulama kuralı içerir.Bu kuralları verilerin her bir alanına ya da kullanıcıların ekrandaki bir veride yaptığı herhangi bir güncellemeye uygulayabilirsiniz.
Bir alana önceden tanımlanmış bir doğrulama kuralı uygulama
Çözüm Gezgini'nin içinde, doğrulama kuralları eklemek istediğiniz varlığa ya da tabloya çift tıklatın.
Veri Tasarımcısı'nda varlık veya tablo açılır.
Veri Tasarımcısı'nın içinde doğrulamak istediğiniz alanı seçin.
Özellikler penceresinde, Doğrulama bölümünden, tüm özelliklerin değerini ayarlayın.
Doğrulama özellikleri hakkında bilgi için, Başvuru: Veri Tasarımcısı özellikleri bilgisine bakın.
Bir Alana Özel Doğrulama Kuralları Uygulama
Özel doğrulama kurallarını kod yazarak tanımlayabilirsiniz.Bu doğrulama kurallarının LightSwitch tarafından ne zaman uygulanacağını belirleyebilirsiniz.Örneğin, doğrulama kodunun bir alan üzerinde, kullanıcı bir değer yazdıktan hemen sonra uygulanmasını belirleyebilirsiniz.Alternatif olarak, bir varlık ya da tablo sadece onun alanları değer taşıdığında değerlendirilmesini yarlayabilirsiniz.Bu model, bir alan içindeki bir değerin geçerliliği, aynı varlık ya da tablo içindeki başka bir alanda bulunan geçerli bir değere dayanıyorsa anlam ifade eder.
Bir alana özel doğrulama kuralı eklemek için
Çözüm Gezgini'nin içinde, doğrulama kuralları eklemek istediğiniz varlığa ya da tabloya çift tıklatın.
Veri Tasarımcısı'nda varlık veya tablo açılır.
Veri Tasarımcısı'nın içinde doğrulamak istediğiniz alanı seçin.
Özellikler penceresinde, Özel Doğrulama'yı tıklayın.
Kod Düzenleyicisi açılır ve FieldName[_Validate] adında bir yöntem oluşturur.
FieldName[_Validate] yöntemine doğrulama kodu ekleyin.
Bir doğrulama kuralını kullanıcı alan değeri sağladıktan sonra hemen uygulamak için, results parametresinin AddPropertyError yöntemini çağırın.
Aşağıdaki örnek, kullanıcı Order varlığının ShippedDate alanınını bugünden sonraki bir tarihe ayarladıktan sonra doğrulama iletisi görüntüler.
Private Sub ShippedDate_Validate(results As EntityValidationResultsBuilder) If Me.ShippedDate > DateTime.Today Then results.AddPropertyError _ ("Shipped date cannot be later than today") End If End Sub
partial void ShippedDate_Validate(EntityValidationResultsBuilder results) { if (this.ShippedDate > DateTime.Today) { results.AddPropertyError("Shipped date cannot be later than today"); } }
Doğrulama için diğer özellikleri vurgulayabileceğinize dikkat edin.Örneğin, kullanıcı müşterinin posta kodunu değiştirdiğinde çalışan bir doğrulama kodu yazabilirsiniz.City özelliğini, AddPropertyError yöntemine bir parametre olarak geçirirseniz, LightSwitch bilgisi City alanını vurgulayacaktır.Doğrulama hatası ileti kutunuz, kullanıcıdan yeni alan kodu ile eşleşen bir şehir adı girmesini isteyebilir.
[!NOT]
Varsayılan olarak, güncellemeler, doğrulama kurallarına uyana kadar veri kaynağına teslim edilemez.Kullanıcıların değerlendirilmemiş güncelleştirmeleri tamamlamalarını etkinleştirmek isterseniz, AddPropertyError yönteminin yerine AddPropertyResult yöntemini kullanın.AddPropertyResult yönteminin ikinci parametresi için, ValidationSeverity.Informational veya ValidationSeverity.Warning bilgilerinden birini girin.
Bir varlık ya da tablo üzerindeki bir doğrulama kuralını uygulamak için, örneğin, kullanıcı bir alanda başka bir alandaki geçerli bir değere bağlı olan bir değeri değiştirmek istediğinde results parametresinin AddEntityError yöntemini çağırın.Aşağıdaki örnek, RequiredDate alan değeriyle OrderDate alan değerini karşılaştırır.Sipariş tarihi, gerekli tarihten daha geç ise, bu kod doğrulama hata iletisi görüntüler.
Private Sub RequiredDate_Validate(results As EntityValidationResultsBuilder) If Me.RequiredDate < Me.OrderDate Then results.AddEntityError _ ("Required data cannot be earlier than the order date") End If End Sub
partial void RequiredDate_Validate(EntityValidationResultsBuilder results) { if (this.RequiredDate < this.OrderDate) { results.AddEntityError ("Required data cannot be earlier than the order date"); } }
Ekrandaki bir Veriye Özel Doğrulama Kuralları Uygulama
Tüm ekrana uygulanan özel doğrulama kurallarını, ekran kodu dosyasındaki < varlık veya tablo adı >[_Validate] yöntemine özel kod ekleyerek belirleyebilirsiniz.Özel kodunuz,kullanıcı ekrandaki herhangi bir veriyi değiştirdiğinde çalışır.(örneğin,veriler ekler ya da silerse).Bu kurallar veriler kaydedilmeden önce çalışır.
Ekrandaki bir veriye özel doğrulama kuralı uygulama
Çözüm Gezgini'nin içinde, doğrulama kuralı belirlemek istediğiniz ekrana çift tıklatın.
Ekran Tasarımcısı'nın en üstündeki Kod Yazbilgisine tıklayın.
Kod Düzenleyicisi açılır.
Bildirimler menüsünden, < varlık veya tablo adı >[_Validate] bilgisini seçin.
Kod dosyasında < varlık veya tablo adı >[_Validate] adında bir kod bloğu görünür.
< varlık veya tablo adı >[_Validate] yöntemine özel doğrulama kodunuzu ekleyin.
Bir doğrulama kuralını uygulamak için,kullanıcı bir veri sırasını, ekledikten, sildikten veya güncelleştirdikten sonra, results parametresinin AddScreenError yöntemini çağırın.
Aşağıdaki örnek, Amerika Birleşik Devletleri'nde bulunan müşterilerin silinmesini engeller.
Private Sub Customers_Validate _ (results As Microsoft.LightSwitch.Framework.Client.ScreenValidationResultsBuilder) If Me.DataWorkspace.NorthwindData.Details.HasChanges Then Dim changeSet As EntityChangeSet = _ Me.DataWorkspace.NorthwindData.Details.GetChanges() Dim entity As IEntityObject For Each entity In changeSet.DeletedEntities.OfType(Of Customer)() Dim cust As Customer = CType(entity, Customer) If cust.Country = "USA" Then entity.Details.DiscardChanges() results.AddScreenResult("Unable to remove this customer." & _ "Cannot delete customers that are located in the USA.", _ ValidationSeverity.Informational) End If Next End If End Sub
partial void Customers_Validate(ScreenValidationResultsBuilder results) { if (this.DataWorkspace.NorthwindData.Details.HasChanges) { EntityChangeSet changeSet = this.DataWorkspace.NorthwindData.Details.GetChanges(); foreach (IEntityObject entity in changeSet.DeletedEntities.OfType<Customer>()) { Customer cust = (Customer)entity; if (cust.Country == "USA") { entity.Details.DiscardChanges(); results.AddScreenResult("Unable to remove this customer. " + "Cannot delete customers that are located in the USA.", ValidationSeverity.Informational); } } } }
[!NOT]
Varsayılan olarak, güncellemeler, doğrulama kurallarına uyana kadar veri kaynağına teslim edilemez.Kullanıcıların değerlendirilmemiş güncelleştirmeleri tamamlamalarını etkinleştirmek isterseniz, AddScreenError yönteminin yerine AddScreenResult yöntemini kullanın.AddScreenResult yönteminin ikinci parametresi için, ValidationSeverity.Informational veya ValidationSeverity.Warning bilgilerinden birini girin.
Veri Kaydedildiği Sırada Çalışan Doğrulama Kuralları Uygulama
Kullanıcı verilerini kaydettiğinde veya kodunuz, veri kaynağının SaveChanges yöntemini çağırdığında, özel doğrulama kurallarını uygulayabilirsiniz.Bu tür bir doğrulama sunucu katmanı üzerinde özel olarak çalışır.
Veri kaydedildiği sırada çalışan doğrulama kuralları uygulama
Çözüm Gezgini'nin içinde, doğrulama kuralları eklemek istediğiniz varlığa ya da tabloya çift tıklatın.
Veri Tasarımcısı'nın komut çubuğundaki Kod Yaz düğmesinin yanındaki oka tıklayın ve ardından varlık veya tablo adı[_Validate] bilgisine tıklayın.
Kod Düzenleyicisi açılır ve varlık veya tablo adı[_Validate] adında bir yöntem oluşturur.
entity or table name[_Validate] yöntemine özel doğrulama kodunuzu ekleyin.
results parametresinin AddEntityError yöntemini çağırın.
Aşağıdaki örnek, kullanıcı bir satış siparişini kaydettiğinde, müşterinin kredi durumunu denetler.Müşterinin kredisi finans departmanı tarafından henüz onaylanmamışsa, bir ValidationException oluşturulur.
Private Sub Orders_Validate _ (entity As Order, results As _ Microsoft.LightSwitch.EntitySetValidationResultsBuilder) If Not CustomerCreditApproval(entity.Customer) Then results.AddEntityError("Customer Credit has not yet been approved") End If End Sub Private Function CustomerCreditApproval(ByVal entity As Customer) As Boolean 'Some custom code to check the customer’s credit status. Return True End Function
partial void Orders_Validate (Order entity, EntitySetValidationResultsBuilder results) { if (!CustomerCreditApproval(entity.Customer)) { results.AddEntityError ("Customer Credit has not yet been approved"); } } private bool CustomerCreditApproval(Customer entity) { //Some custom code to check the customer's credit status. return true; }
[!NOT]
Varsayılan olarak, özel durum oluştuğunda, bir hata iletisi görüntülenir ve veri o anki değişiklik kümesinde kalır.Bu davranışı değiştirmek isterseniz, kodunuza ValidationException bilgisini tanıtabilirsiniz.
Ayrıca bkz.
Görevler
Nasıl yapılır: veri olayları işlemek
Nasıl yapılır: veri alanlarını tanımlama
Kavramlar
Kod kullanarak verilerle ilgili görevler gerçekleştirme
Kodda ilgili verileri nesneleriyle çalışma
LightSwitch içindeki kod yazma
Diğer Kaynaklar
LightSwitch Uygulamaları içindeki Veri Doğrulama'ya Genel Bakış