Aracılığıyla paylaş


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.

Doğrulama hata iletisi

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

video bağlantısı İ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

  1. Çö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.

  2. Veri Tasarımcısı'nın içinde doğrulamak istediğiniz alanı seçin.

  3. Ö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

  1. Çö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.

  2. Veri Tasarımcısı'nın içinde doğrulamak istediğiniz alanı seçin.

  3. Ö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.

  4. 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

  1. Çözüm Gezgini'nin içinde, doğrulama kuralı belirlemek istediğiniz ekrana çift tıklatın.

  2. Ekran Tasarımcısı'nın en üstündeki Kod Yazbilgisine tıklayın.

    Kod Düzenleyicisi açılır.

  3. 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.

  4. < 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

  1. Çözüm Gezgini'nin içinde, doğrulama kuralları eklemek istediğiniz varlığa ya da tabloya çift tıklatın.

  2. 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.

  3. 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ış

Veri: Uygulamanızı arkasında bilgi