Freigeben über


Hinzufügen von Validierungen zu Entitätsklassen

Hinweis

Die DataSet Klassen und verwandten Klassen sind ältere .NET Framework-Technologien aus den frühen 2000er Jahren, mit denen Anwendungen mit Daten im Arbeitsspeicher arbeiten können, während die Apps von der Datenbank getrennt sind. Die Technologien sind besonders nützlich für Apps, mit denen Benutzer Daten ändern und die Änderungen wieder in der Datenbank speichern können. Obwohl Datasets eine bewährte erfolgreiche Technologie sind, ist der empfohlene Ansatz für neue .NET-Anwendungen die Verwendung von Entity Framework Core. Entity Framework bietet eine natürlichere Möglichkeit zum Arbeiten mit tabellarischen Daten als Objektmodelle und verfügt über eine einfachere Programmierschnittstelle.

Die Überprüfung von Entitätsklassen ist der Prozess der Bestätigung, dass die in Datenobjekte eingegebenen Werte den Einschränkungen im Schema eines Objekts entsprechen, und auch den regeln, die für die Anwendung festgelegt wurden. Das Überprüfen von Daten vor dem Senden von Aktualisierungen an die zugrunde liegende Datenbank ist eine bewährte Methode, die Fehler reduziert. Außerdem wird die potenzielle Anzahl von Roundtrips zwischen einer Anwendung und der Datenbank reduziert.

Die LINQ to SQL-Tools in Visual Studio bieten Partielle Methoden, mit denen Benutzer den vom Designer generierten Code erweitern können, der während von Einfügungen, Updates und Löschvorgängen vollständiger Entitäten ausgeführt wird, sowie während und nach einzelnen Spaltenänderungen.

Hinweis

Dieses Thema enthält die grundlegenden Schritte zum Hinzufügen der Überprüfung zu Entitätsklassen mithilfe des O/R-Designers. Da es schwierig sein kann, diese generischen Schritte auszuführen, ohne auf eine bestimmte Entitätsklasse zu verweisen, wird eine exemplarische Vorgehensweise bereitgestellt, die tatsächliche Daten verwendet.

Hinzufügen einer Gültigkeitsprüfung für Änderungen am Wert in einer bestimmten Spalte

Dieses Verfahren zeigt, wie Daten überprüft werden, wenn sich der Wert in einer Spalte ändert. Da die Überprüfung innerhalb der Klassendefinition (anstelle der Benutzeroberfläche) ausgeführt wird, wird eine Ausnahme ausgelöst, wenn der Wert zu einem Fehler bei der Überprüfung führt. Implementieren Sie die Fehlerbehandlung für den Code in Ihrer Anwendung, der versucht, die Spaltenwerte zu ändern.

Hinweis

Die Anweisungen in diesem Artikel veranschaulichen die neueste Version der interaktiven Entwicklungsumgebung (Interactive Development Experience, IDE), die in Visual Studio verfügbar ist. Auf Ihrem Computer werden möglicherweise unterschiedliche Namen oder Speicherorte für einige der Benutzeroberflächenelemente angezeigt. Möglicherweise verwenden Sie eine andere Version von Visual Studio oder andere Umgebungseinstellungen. Weitere Informationen finden Sie unter Personalisieren der IDE-.

So überprüfen Sie Daten während der Wertänderung einer Spalte

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

  2. Klicken Sie im O/R-Designer mit der rechten Maustaste auf die Klasse, für die Sie die Überprüfung 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 Methodennamen.

    2. Suchen Sie die OnCOLUMNNAMEChanging-Methode für die Spalte, der Sie eine Überprüfung hinzufügen möchten.

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

    4. Fügen Sie zuerst den folgenden Code hinzu, um zu überprüfen, ob ein Wert eingegeben wurde, und stellen Sie dann sicher, dass der für die Spalte eingegebene Wert für Ihre Anwendung akzeptabel ist. Das value Argument enthält den vorgeschlagenen Wert. Fügen Sie daher logik hinzu, um zu bestätigen, dass 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 keine Ereignishandler automatisch generieren, können Sie IntelliSense verwenden, um die spaltenverändernden Teilmethoden zu erstellen. Geben Sie partial ein und dann ein Leerzeichen, um auf die Liste der verfügbaren Teilmethoden zuzugreifen. Klicken Sie auf die Methode zum Ändern von Spalten für die Spalte, für die Sie eine Gültigkeitsprüfung hinzufügen möchten. Der folgende Code ähnelt dem Code, der generiert wird, wenn Sie eine teilweise Methode zum Ändern von Spalten auswählen:

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

Validierung für Updates an einer Entitätsklasse hinzufügen

Zusätzlich zum Überprüfen von Werten während änderungen können Sie auch Daten überprüfen, wenn versucht wird, eine vollständige Entitätsklasse zu aktualisieren. Die Überprüfung während einer versuchten Aktualisierung ermöglicht es Ihnen, Werte in mehreren Spalten zu vergleichen, wenn dies für Geschäftsregeln erforderlich ist. Das folgende Verfahren zeigt, wie Sie überprüfen, wann versucht wird, eine vollständige Entitätsklasse zu aktualisieren.

Hinweis

Der Überprüfungscode für Aktualisierungen von vollständigen Entitätsklassen wird in der partiellen Klasse (anstelle der partiellen DataContext Klasse einer bestimmten Entitätsklasse) ausgeführt.

So überprüfen Sie Daten während einer Aktualisierung einer Entitätsklasse

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

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

    Der Code-Editor wird mit einer Teilklasse für die 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 mithilfe des instance Arguments auf einzelne Spaltenwerte 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 keine Ereignishandler automatisch generieren, können Sie IntelliSense verwenden, um die Partielle UpdateCLASSNAME Methode zu erstellen. Geben Sie partial ein und dann ein Leerzeichen, um auf die Liste der verfügbaren Teilmethoden zuzugreifen. Klicken Sie auf die Updatemethode für die Klasse, für die Sie die Überprüfung hinzufügen möchten. Der folgende Code ähnelt dem Code, der generiert wird, wenn Sie eine UpdateCLASSNAME partielle Methode auswählen:

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