Nasıl yapılır: N Katmanlı bir Veri Kümesine Doğrulama Ekleme

n katmanı bir çözüme bölünen veri kümesine doğrulama eklemek, tek dosyalı bir veri kümesine (tek projedeki bir veri kümesi) doğrulama eklemekle temel olarak aynıdır.Veri üzerine doğrulama yapmak için önerilen konum, bir veri tablosunun ColumnChanging ve/veya RowChanging olayları sırasındadır.

Türü Belirtilmiş Veri Kümeleri Oluşturma ve Düzenleme, veri kümesindeki veri tablolarının sütun ve satır değiştiren olaylarına kullanıcı kodu ekleyebileceğiniz kısmı sınıflar oluşturma işlevselliği sağlar.Bir n-katmanı çözümündeki bir veri kümesine kod ekleme hakkında daha fazla bilgi için, bkz. Nasıl yapılır: N Katmanlı Uygulamalarda Veri Kümelerine Kod Ekleme ve Nasıl yapılır: N Katmanlı Uygulamalarda TableAdapters Öğesine Kod Ekleme.Kısmi sınıflar hakkında daha fazla bilgi için bkz. Nasıl Yapılır: Sınıfı Kısmi Sınıflara Bölme (Sınıf Tasarımcısı) veya Kısmi Sınıflar ve Yöntemler (C# Programlama Kılavuzu).

[!NOT]

Veri kümelerini TableAdapters'dan ayırdığınızda (Veri Kümesi Projesi özelliğini ayarlayarak),, projedeki varolan kısmi veri kümesi sınıfları otomatik olarak taşınmaz.Var olan veri kümesi kısmi sınıfları, veri kümesi projesine el ile taşınmalıdır.

[!NOT]

Dataset Designer, C#'ta ColumnChanging ve RowChanging olayları için otomatik olarak olay işleyicileri oluşturmaz.El ile bir olay işleyicisi oluşturmanız ve temel olayı, olay işleyicisine bağlamanız gerekir.Aşağıdaki yordamlar Visual Basic ve C# içerisindeki gerekli olay işleyicilerini oluşturma adımlarını sağlamaktadır.

Tek Tek Sütunlara Yapılan Değişiklikleri Doğrulama

ColumnChanging olayını işleyerek, tek tek sütunlardaki değerleri doğrulayın.ColumnChanging olayı, bir sütundaki bir değer değiştirildiğinde oluşturulur.Türü Belirtilmiş Veri Kümeleri Oluşturma ve Düzenleme içinde istediğiniz sütunu çift tıklatarak ColumnChanging olayı için bir olay işleyicisi oluşturun.

Bir sütunu ilk kez çift tıklattığınızda tasarımcı ColumnChanging etkinliği için bir olay işleyicisi oluşturur.ColumnChanging olayının yanı sıra If…Then deyimi de belli sütun için bu testleri oluşturur.Örneğin, Northwind Siparişleri tablosundaki RequiredDate sütunu çift tıklatıldığında, aşağıdaki kod oluşturulur:

Private Sub OrdersDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As System.Data.DataColumnChangeEventArgs) Handles Me.ColumnChanging
    If (e.Column.ColumnName = Me.RequiredDateColumn.ColumnName) Then
        ' Add validation code here.
    End If
End Sub

[!NOT]

C# projelerinde, Dataset Designer yalnızca veri kümesi için kısmi sınıflar ve veri kümesinde tek tek tablolar oluşturur.Dataset Designer, C#'te Visual Basic'te olduğu gibi ColumnChanging ve RowChanging olayları için otomatik olarak olay işleyiciler oluşturmaz.C# projelerinde, olayı işlemek ve temeldeki olaya yöntemi bağlamak için yöntemi el ile oluşturmanız gerekir.Aşağıdaki yordam Visual Basic ve C# içerisindeki gerekli olay işleyicilerini oluşturma adımlarını sağlamaktadır.

[!NOT]

Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için, bkz. Visual Studio'da Geliştirme Ayarlarını özelleştirme.

Ayrı ayrı sütun değerlerine değişiklikler sırasında doğrulama eklemek için

  1. Çözüm Gezgini'nde .xsd dosyasını çift tıklayarak Türü Belirtilmiş Veri Kümeleri Oluşturma ve Düzenleme'da veri kümesini açın.Daha fazla bilgi için bkz. Nasıl yapılır: Veri Kümesi Tasarımcısında bir Veri Kümesini Açma.

  2. Doğrulamak istediğiniz sütunu çift tıklatın.Bu eylem, ColumnChanging olay işleyicisini oluşturur.

    [!NOT]

    Dataset Designer, C# olayı için otomatik olarak bir olay işleyicisi oluşturmaz.C#'taki olayı işlemek için gereken kod aşağıya eklenmiştir.SampleColumnChangingEvent oluşturulur ve EndInit yöntemindeki ColumnChanging olayına bağlanır.

  3. Uygulamanızın gerekliliklerini karşılayan veriyi içeren e.ProposedValue öğesini doğrulamak için kod ekleyin.Önerilen değer kabul edilemezse, hata içerdiğini belirtmek için sütunu ayarlayın.

    Aşağıdaki kod örneği Miktar sütununun 0'dan fazla değer içerdiğini doğrular.Miktar sıfıra eşit veya küçükse, sütun hata olarak ayarlanır.Miktar 0'dan fazlaysa Else yan tümcesi hatayı siler.Sütun değiştirme olay işleyicisinin kodu şuna benzemelidir:

    If (e.Column.ColumnName = Me.QuantityColumn.ColumnName) Then
        If CType(e.ProposedValue, Short) <= 0 Then
            e.Row.SetColumnError(e.Column, "Quantity must be greater than 0")
        Else
            e.Row.SetColumnError(e.Column, "")
        End If
    End If
    
    // C#
    // Add this code to the DataTable 
    // partial class.
    
        public override void EndInit()
        {
            base.EndInit();
            // Hook up the ColumnChanging event
            // to call the SampleColumnChangingEvent method.
            ColumnChanging += SampleColumnChangingEvent;
        }
    
        public void SampleColumnChangingEvent(object sender, System.Data.DataColumnChangeEventArgs e)
        {
            if (e.Column.ColumnName == QuantityColumn.ColumnName)
            {
                if ((short)e.ProposedValue <= 0)
                {
                    e.Row.SetColumnError("Quantity", "Quantity must be greater than 0");
                }
                else
                {
                    e.Row.SetColumnError("Quantity", "");
                }
            }
        }
    

Bütün Olarak Satırlardaki Değişiklikleri Doğrulama

RowChanging olayını işleyerek, bütün olarak sıralardaki değerleri doğrulayın.RowChanging olayı, bir sütundaki değerler kaydedildiğinde oluşturulur.Bir sütundaki değer başka bir sütundaki değerle ilişkili olduğunda RowChanging olayını doğrulamak gerekir.Örneğin, Northwind'deki Siparişler tablosunda yer alan OrderDate ve RequiredDate'i göz önünde bulundurun.Siparişler girilmekte olduğunda, doğrulama, siparişin OrderDate ile aynı veya ondan önceki bir RequiredDate ile girilmemesini sağlar.Bu örnekte, RequiredDate ve OrderDate sütunlarının her ikisinin de değerleri karşılaştırılmalıdır; tek tek sütun değişikliğinin bir mantığı yoktur.

Türü Belirtilmiş Veri Kümeleri Oluşturma ve Düzenleme içinde tablonun başlık çubuğundaki tablo adını çift tıklatarak RowChanging için bir olay işleyicisi oluşturun.

Tüm satırlara değişiklikler sırasında doğrulama eklemek için

  1. Çözüm Gezgini'nde .xsd dosyasını çift tıklayarak Türü Belirtilmiş Veri Kümeleri Oluşturma ve Düzenleme'da veri kümesini açın.Daha fazla bilgi için bkz. Nasıl yapılır: Veri Kümesi Tasarımcısında bir Veri Kümesini Açma.

  2. Tasarımcıdaki veri tablosunun başlık çubuğunu çift tıklatın.

    RowChanging olay işleyicisiyle kısmi bir sınıf oluşturulur ve Kod Düzenleyicisinde açılır.

    [!NOT]

    Dataset Designer, C# projelerinde RowChanging olayı için otomatik olarak bir olay işleyici oluşturmaz.RowChanging olayını işlemek için bir yöntem oluşturmanız ve olayı tablonun başlatma yöntemine bağlamak için kodu yürütmeniz gerekir.

  3. Kısmi sınıf bildirimi içerisine kullanıcı kodu ekleyin.

  4. Aşağıdaki kod Visual Basic için RowChanging olayı sırasında doğrulamak üzere kullanıcı kodunun nereye ekleneceğini göstermektedir.

    Partial Class OrdersDataTable
        Private Sub OrdersDataTable_OrdersRowChanging(ByVal sender As System.Object, ByVal e As OrdersRowChangeEvent) Handles Me.OrdersRowChanging
            ' Add logic to validate columns here.
            If e.Row.RequiredDate <= e.Row.OrderDate Then
                ' Set the RowError if validation fails.
                e.Row.RowError = "Required Date cannot be on or before the OrderDate"
            Else
                ' Clear the RowError when validation passes.
                e.Row.RowError = ""
            End If
        End Sub
    End Class
    
  5. Aşağıdaki kod RowChanging olay işleyicisinin nasıl oluşturulacağını ve C# içinRowChanging olayı sırasında doğrulamak üzere kullanıcı kodunun nereye ekleneceğini göstermektedir:

    partial class OrdersDataTable
    {
        public override void EndInit()
        {
            base.EndInit();
            // Hook up the event to the
            // RowChangingEvent method.
            OrdersRowChanging += RowChangingEvent;
        }
    
        public void RowChangingEvent(object sender, OrdersRowChangeEvent e)
        {
            // Perfom the validation logic.
            if (e.Row.RequiredDate <= e.Row.OrderDate)
            {
                // Set the row to an error when validation fails.
                e.Row.RowError = "Required Date cannot be on or before the OrderDate";
            }
            else
            {
                // Clear the RowError if validation passes.
                e.Row.RowError = "";
            }
        }
    }
    

Ayrıca bkz.

Görevler

İzlenecek Yol: N Katmanlı Bir Veri Uygulaması Oluşturma

Kavramlar

N Katmanlı Veri Uygulamalarına Genel Bakış

Veri Kümelerindeki Verileri Doğrulama