Exemplarische Vorgehensweise: Hinzufügen von Validierungen zu einer N-Tier-Datenanwendung

Mit dem Vorgang der Validierung von Daten wird bestätigt, dass Werte, die in Datenobjekte (z. B. Datentabellen oder LINQ to SQL-Klassen) eingegeben wurden, den Einschränkungen eines Objektschemas entsprechen. Außerdem wird durch Validierungen die Einhaltung von Regeln sichergestellt, die für die Anwendung eingerichtet wurden. Es dient der Fehlervermeidung, Daten vor dem Senden von Aktualisierungen an zugrunde liegende Datenbanken auf Gültigkeit zu überprüfen. Dadurch wird auch die potenzielle Anzahl von Roundtrips zwischen einer Anwendung und der Datenbank verringert.

Diese exemplarische Vorgehensweise enthält schrittweise Anweisungen, wie Sie einer N-Tier-Anwendung (der im Thema Exemplarische Vorgehensweise: Erstellen einer N-Tier-Datenanwendung erstellten Projektmappe) Validierungen hinzufügen.

In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie die folgenden Aufgaben ausführen:

  • Automatisches Generieren von partiellen Klassen mit dem DataSet-Designer

  • Hinzufügen von Code zum Durchführen von Validierungen, wenn sich der Wert einer einzelnen Spalte ändert

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:

Tipp

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Öffnen der NTierWalkthrough-Projektmappe

So öffnen Sie die NTierWalkthrough-Projektmappe

Hinzufügen von Validierungen zum Überprüfen von Daten bei einer Änderung in einer einzelnen Spalte

In diesem Verfahren fügen Sie eine Validierung hinzu, durch die überprüft wird, ob die Spalte OrderDate in einer neuen Bestellung auf das aktuelle oder ein früheres Datum festgelegt ist. Eine Anforderung dieser Anwendung ist, dass die Spalte OrderDate keine zukünftigen Datumsangaben enthalten kann, d. h. Bestellungen mit einem zukünftigen Datum sind nicht zulässig.

So fügen Sie eine Validierung zum Überprüfen des in der Spalte OrderDate eingegebenen Werts hinzu

  1. Öffnen Sie das Dataset im DataSet-Designer, indem Sie im Projektmappen-Explorer im DataAccessTier-Projekt auf die Datei "NorthwindDataSet.xsd" doppelklicken.

  2. Doppelklicken Sie im Designer in der Tabelle Orders auf die Spalte OrderDate. Durch diese Aktion wird der ColumnChanging-Ereignishandler erstellt.

    Tipp

    Der Ereignishandler für das C#-Ereignis wird vom DataSet-Designer nicht automatisch erstellt. Den Code, der in C# zum Verarbeiten des Ereignisses erforderlich ist, finden Sie weiter unten in diesem Verfahren. SampleColumnChangingEvent wird erstellt, und anschließend wird das ColumnChanging-Ereignis in der EndInit-Methode abonniert.

  3. Fügen Sie Code hinzu, der überprüft, ob e.ProposedValue für die Spalte OrderDate das aktuelle oder ein früheres Datum enthält. Legen Sie fest, dass die Spalte einen Fehler enthält, wenn der vorgeschlagene Wert ungültig ist.

    Im folgenden Codebeispiel wird überprüft, ob die Spalte OrderDate das aktuelle oder ein früheres Datum enthält. Wenn der OrderDate-Wert ein zukünftiges Datum ist, wird für die Spalte OrderDate ein Fehler festgelegt. Wenn OrderDate das heutige oder ein früheres Datum enthält, wird der Fehler in der Else-Klausel gelöscht.

    Fügen Sie den Visual Basic-Code im ColumnChanging-Ereignishandler ein. Fügen Sie den C#-Code in die Deklaration der partiellen OrdersDataTable-Klasse ein.

    If (e.Column.ColumnName = Me.OrderDateColumn.ColumnName) Then
        If CType(e.ProposedValue, DateTime) > Today Then
            e.Row.SetColumnError(e.Column, "OrderDate cannot be in the future")
        Else
            e.Row.SetColumnError(e.Column, "")
        End If
    End If
    
    // Replace the NorthwindDataSet partial class with the following:
    public partial class NorthwindDataSet
    {
        partial class OrdersDataTable
        {
            public override void EndInit()
            {
                base.EndInit();
                // Configure the ColumnChanging event
                // to call the SampleColumnChangingEvent method.
                ColumnChanging += SampleColumnChangingEvent;
            }
    
            public void SampleColumnChangingEvent(object sender, System.Data.DataColumnChangeEventArgs e)
            {
                if (e.Column.ColumnName == OrderDateColumn.ColumnName)
                {
                    if ((System.DateTime)e.ProposedValue > System.DateTime.Today)
                    {
                        e.Row.SetColumnError("OrderDate", " OrderDate cannot be in the future");
                    }
                    else
                    {
                        e.Row.SetColumnError("OrderDate", "");
                    }
                }
    
            }
        }
    }
    

Testen der Anwendung

Ändern Sie den Wert der Spalte OrderDate in ein ungültiges Datum, um die Anwendung zu testen.

So testen Sie die Anwendung

  1. Drücken Sie F5.

  2. Im Formular werden die Daten der Tabellen Customers und Orders angezeigt.

  3. Ändern Sie im DataGridView mit den Bestellungen den Wert in der Spalte OrderDate (eines beliebigen Datensatzes) in das morgige Datum.

  4. Navigieren Sie aus der Zeile, um die Änderung zu übernehmen.

    Die Validierung schlägt fehl, und in der OrderDate-Zelle, die den ungültigen Wert enthält, wird ein Fehlersymbol angezeigt.

  5. Halten Sie den Mauszeiger auf das Fehlersymbol, um den Validierungsfehler anzuzeigen.

  6. Schließen Sie das Formular.

Nächste Schritte

Nachdem Sie einer N-Tier-Anwendung eine Validierung hinzugefügt haben, sollten Sie, je nach den Anforderungen der Anwendung, möglicherweise die folgenden Schritte ausführen. Beispielsweise können Sie an dieser Anwendung die folgende Verbesserung vornehmen:

Siehe auch

Konzepte

Neues in der Datenanwendungsentwicklung

Weitere Ressourcen

Arbeiten mit Datasets in N-Tier-Anwendungen

Hierarchische Aktualisierung

Zugreifen auf Daten in Visual Studio