Gewusst wie: Hinzufügen von Validierungen zu Entitätsklassen
Aktualisiert: November 2007
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.
Der Object Relational Designer (O/R-Designer) stellt partielle Methoden bereit, mit denen der Benutzer den durch den Designer generierten Code erweitern kann, der beim Einfügen, Aktualisieren und Löschen ganzer Entitäten oder während bzw. nach dem Ändern 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. Weitere schrittweise Anleitungen zur Konfiguration der Validierung mit dem O/R-Designer finden Sie unter Exemplarische Vorgehensweise: Hinzufügen von Validierung zu Entitätsklassen. |
Hinzufügen von Validierungen bei Werteänderungen in 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 fehlschlägt. Implementieren Sie eine Fehlerbehandlung für den Code in der Anwendung, der die Änderung von Spaltenwerten durchführt.
Hinweis: |
---|
Ihr Computer zeigt für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung möglicherweise 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. |
So validieren Sie Daten während einer Änderung eines Spaltenwerts
Erstellen Sie eine neue LINQ to SQL-Klassendatei (.dbml-Datei) im O/R-Designer, oder öffnen Sie eine vorhandene Datei. (Doppelklicken Sie im Projektmappen-Explorer auf die .dbml-Datei.)
Klicken Sie im O/R-Designer mit der rechten Maustaste auf die Klasse, der Sie Validierungen hinzufügen möchten, und klicken Sie dann auf Code anzeigen.
Der Code-Editor wird mit einer partiellen Klasse für die ausgewählte Entitätsklasse geöffnet.
Platzieren Sie den Cursor in der partiellen Klasse.
Für Visual Basic-Projekte:
Erweitern Sie die Liste Methodenname.
Suchen Sie die OnSPALTENNNAMEChanging-Methode für die Spalte, der Sie Validierung hinzufügen möchten.
Eine OnSPALTENNAMEChanging-Methode wird der partiellen Klasse hinzugefügt.
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 von Validierungen 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 einer versuchten Aktualisierung 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 Aktualisierungen 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 einer Aktualisierung einer Entitätsklasse
Erstellen Sie eine neue LINQ to SQL-Klassendatei (.dbml-Datei) im O/R-Designer, oder öffnen Sie eine vorhandene Datei. (Doppelklicken Sie im Projektmappen-Explorer auf die .dbml-Datei.)
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.
Platzieren Sie den Cursor in die partielle Klasse für den DataContext.
Für Visual Basic-Projekte:
Erweitern Sie die Liste Methodenname.
Klicken Sie auf UpdateENTITÄTSKLASSENNAME.
Eine UpdateENTITÄTSKLASSENNAME-Methode wird der partiellen Klasse hinzugefügt.
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 UpdateKLASSENNAME-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, der Sie Validierung hinzufügen möchten. Der folgende Code ähnelt dem Code, der generiert wird, wenn Sie eine partielle UpdateKLASSENNAME-Methode auswählen:
partial void UpdateCLASSNAME(CLASSNAME instance) { if ((instance.COLUMNNAME == x) && (instance.COLUMNNAME = y)) { string ErrorMessage = "Invalid data!"; throw new System.Exception(ErrorMessage); } }