Freigeben über


Hinzufügen von Validierungen zu Entitätsklassen

Hinweis

Datasets und verwandte Klassen sind ältere .NET-Technologien aus den frühen 2000er Jahren, die es Anwendungen ermöglichen, mit Daten im Arbeitsspeicher zu arbeiten, während die Anwendungen von der Datenbank getrennt sind. Die Technologien sind besonders nützlich für Anwendungen, die es Benutzern ermöglichen, Daten zu ändern und die Änderungen wieder in der Datenbank zu speichern. Obwohl sich Datasets als sehr erfolgreiche Technologie erwiesen haben, empfehlen wir, dass neue .NET-Anwendungen Entity Framework Core verwenden. Entity Framework bietet eine natürlichere Möglichkeit, mit tabellarischen Daten als Objektmodelle zu arbeiten, und verfügt über eine einfachere Programmierschnittstelle.

Durch den Vorgang der Validierung von Entitätsklassen wird bestätigt, dass die in Datenobjekte eingegebenen Werte den Einschränkungen eines Objektschemas oder den bestehenden Regeln für die Anwendung entsprechen. 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.

Die LINQ to SQL-Tools in Visual Studio stellen partielle Methoden bereit, mit denen der Benutzer den vom Designer generierten Code erweitern kann, der während des Eingebens, Aktualisierens und Löschens ganzer Entitäten oder während bzw. nach Änderungen einzelner Spalten ausgeführt wird.

Hinweis

Dieses Thema beschreibt die grundlegenden Schritte zum Hinzufügen von Validierungen zu Entitätsklassen mit dem O/R-Designer. Da es schwierig sein könnte, diese generischen Schritte ohne Verweis auf eine bestimmte Entitätsklasse nachzuvollziehen, wird eine exemplarische Vorgehensweise mit tatsächlichen Daten zur Verfügung gestellt.

Hinzufügen einer Validierung für Änderungen am Wert einer bestimmten Spalte

Dieses Verfahren veranschaulicht, wie Daten auf Gültigkeit geprüft werden, wenn sich der Wert in einer Spalte ändert. Da die Validierung innerhalb der Klassendefinition (nicht der Benutzeroberfläche) ausgeführt wird, wird eine Ausnahme ausgelöst, wenn die Validierung aufgrund des Werts nicht durchgeführt werden kann. Implementieren Sie eine Fehlerbehandlung für den Code in der Anwendung, der die Änderung von Spaltenwerten durchführt.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in diesem Artikel. Möglicherweise verwenden Sie eine andere Edition von Visual Studio oder andere Umgebungseinstellungen. Weitere Informationen finden Sie unter Personalisieren der IDE.

So validieren Sie Daten während einer Änderung eines Spaltenwerts

  1. Öffnen oder erstellen Sie eine neue LINQ to SQL Classes-Datei (.dbml Datei) im O/R Designer. (Doppelklicken Sie auf die Datei .dbml im Projektmappen-Explorer.)

  2. Klicken Sie im O/R-Designer mit der rechten Maustaste auf die Klasse, der Sie Validierungen hinzufügen möchten, und wählen Sie dann Code anzeigen aus.

    Der Code-Editor wird mit einer partiellen Klasse für die ausgewählte Entitätsklasse geöffnet.

  3. Platzieren Sie den Cursor in der partiellen Klasse.

  4. Für Visual Basic-Projekte:

    1. Erweitern Sie die Liste Methodenname.

    2. Suchen Sie die OnSPALTENNNAMEChanging-Methode für die Spalte, der Sie eine Validierung hinzufügen möchten.

    3. Der partiellen Klasse wird eine OnCOLUMNNAMEChanging-Methode hinzugefügt.

    4. Fügen Sie den folgenden Code hinzu, um zunächst zu überprüfen, ob ein Wert eingegeben wurde, und dann sicherzustellen, dass der für die Spalte eingegebene Wert für die Anwendung gültig ist. Das value-Argument enthält den vorgeschlagenen Wert, fügen Sie daher Logik hinzu, um sicherzustellen, das es sich um einen gültigen Wert handelt:

      If value.HasValue Then
          ' Add code to ensure that the value is acceptable.
          ' If value < 1 Then
          '    Throw New Exception("Invalid data!")
          ' End If
      End If
      

    Für C#-Projekte:

    Da C#-Projekte die Ereignishandler nicht automatisch generieren, können Sie IntelliSense verwenden, um die partiellen Methoden für die Spaltenänderung zu erstellen. Geben Sie partial und dann ein Leerzeichen ein, um auf die Liste der verfügbaren partiellen Methoden zuzugreifen. Klicken Sie auf die Methode zur Spaltenänderung für die Spalte, der Sie Validierung hinzufügen möchten. Der folgende Code ähnelt dem Code, der generiert wird, wenn Sie eine partielle Methode zur Spaltenänderung auswählen:

    partial void OnCOLUMNNAMEChanging(COLUMNDATATYPE value)
        {
           throw new System.NotImplementedException();
        }
    

Hinzufügen einer Validierung für Aktualisierungen zu einer Entitätsklasse

Neben der Überprüfung von Werten während Änderungen können Sie auch Daten auf Gültigkeit prüfen, wenn versucht wird, eine vollständige Entitätsklasse zu aktualisieren. Validierung während eines versuchten Updates ermöglicht Ihnen, Werte in mehreren Spalten zu vergleichen, wenn die Geschäftsregeln dies erfordern. Das folgende Verfahren veranschaulicht die Validierung beim Versuch, eine vollständige Entitätsklasse zu aktualisieren.

Hinweis

Der Validierungscode für Updates vollständiger Entitätsklassen wird in der partiellen DataContext-Klasse ausgeführt (statt in der partiellen Klasse einer bestimmten Entitätsklasse).

So validieren Sie Daten während eines Updates einer Entitätsklasse

  1. Öffnen oder erstellen Sie eine neue LINQ to SQL Classes-Datei (.dbml Datei) im O/R Designer. (Doppelklicken Sie auf die Datei .dbml im Projektmappen-Explorer.)

  2. Klicken Sie im O/R-Designer mit der rechten Maustaste in einen leeren Bereich, und klicken Sie auf Code anzeigen.

    Der Code-Editor wird mit einer partiellen Klasse für den DataContext geöffnet.

  3. Platzieren Sie den Cursor in die partielle Klasse für den DataContext.

  4. Für Visual Basic-Projekte:

    1. Erweitern Sie die Liste Methodenname.

    2. Klicken Sie auf UpdateENTITYCLASSNAME.

    3. Der partiellen Klasse wird eine UpdateENTITYCLASSNAME-Methode hinzugefügt.

    4. Greifen Sie auf die Werte einzelner Spalten mithilfe des instance-Arguments zu, wie im folgenden Code dargestellt:

      If (instance.COLUMNNAME = x) And (instance.COLUMNNAME = y) Then
          Dim ErrorMessage As String = "Invalid data!"
          Throw New Exception(ErrorMessage)
      End If
      

    Für C#-Projekte:

    Da C#-Projekte die Ereignishandler nicht automatisch generieren, können Sie IntelliSense verwenden, um die partielle UpdateCLASSNAME-Methode zu erstellen. Geben Sie partial und dann ein Leerzeichen ein, um auf die Liste der verfügbaren partiellen Methoden zuzugreifen. Klicken Sie auf die Aktualisierungsmethode für die Klasse, für die Sie die Validierung hinzufügen möchten. Der folgende Code ähnelt dem Code, der generiert wird, wenn Sie eine partielle UpdateCLASSNAME-Methode auswählen:

    partial void UpdateCLASSNAME(CLASSNAME instance)
    {
        if ((instance.COLUMNNAME == x) && (instance.COLUMNNAME = y))
        {
            string ErrorMessage = "Invalid data!";
            throw new System.Exception(ErrorMessage);
        }
    }