Procédure pas à pas : ajout d'une validation à des classes d'entité

Mise à jour : November 2007

La validation des données est le processus qui consiste à confirmer que les valeurs entrées dans des objets de donnée se conforment aux contraintes du schéma d'un objet et également aux règles établies pour votre application. Il est conseillé de valider les données avant d'envoyer des mises à jour à la base de données sous-jacente pour réduire les erreurs et le nombre potentiel d'allers-retours entre une application et la base de données.

Le Concepteur Objet/Relationnel (Concepteur O/R) fournit des méthodes partielles aux utilisateurs pour leur permettre d'étendre le code généré par le concepteur qui s'exécute pendant les insertions, mises à jour et suppressions d'entités complètes, et également pendant et après les modifications des colonnes individuelles.

Cette procédure pas à pas fournit des instructions pour ajouter une capacité de validation aux classes d'entité LINQ to SQL et est traitée de manière plus approfondie à la rubrique Procédure pas à pas : création de classes LINQ to SQL (Concepteur O/R).

Dans cette procédure pas à pas, vous allez effectuer les tâches suivantes :

  • Ajouter une capacité de validation pour les modifications de données dans une colonne spécifique.

  • Ajouter une capacité de validation pour les mises à jour d'une entité complète.

Composants requis

Pour exécuter cette procédure pas à pas, vous devez disposer des éléments suivants :

Remarque :

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.

Ouverture de la solution ORDesignerWalkthrough

Pour ouvrir la solution ORDesignerWalkthrough

Ajout d'une validation pour la modification d'une valeur dans une colonne spécifique

Dans cette partie de la procédure pas à pas, vous ajouterez une capacité de validation logique à la colonne RequiredDate d'une commande. Vous ajouterez le code pour vérifier que RequiredDate précède bien la date du jour. La validation étant effectuée dans l'actuelle définition de classe (plutôt que dans l'interface utilisateur), une exception est levée si la valeur provoque l'échec de la validation.

Pour valider des données pendant la modification de valeur d'une colonne

  1. Ouvrez le fichier Northwind.dbml dans le Concepteur O/R. (Double-cliquez sur le fichier Northwind.dbml dans l'Explorateur de solutions.)

  2. Comme vous ajoutez une validation de la colonne RequiredDate d'une commande, cliquez avec le bouton droit sur la classe Order dans le concepteur, puis cliquez sur Afficher le code.

    Une classe partielle pour la commande s'ouvre dans l'éditeur de code.

  3. Placez le curseur dans la classe partielle Order .

  4. Pour les projets Visual Basic :

    1. Développez la liste Nom de la méthode (zone de liste déroulante(Déclarations)).

    2. Cliquez sur OnRequiredDateChanging.

    3. Une méthode OnRequiredDateChanging est ajoutée à la classe partielle Order.

    4. Ajoutez le code suivant à la méthode OnRequiredDataChanging pour garantir que la valeur entrée dans la colonne RequiredDate ne précède pas la date du jour :

      If value.HasValue Then
          If value < Today Then
              Throw New Exception("Required Date cannot be in the past")
          End If
      End If
      

    Pour les projets C# :

    1. Ajoutez le code suivant à la classe partielle Order pour garantir que la valeur entrée dans la colonne RequiredDate ne précède pas la date du jour :

      partial void OnRequiredDateChanging(System.DateTime? value)
      {
          if (value < System.DateTime.Today)
          {
              throw new System.Exception("Required Date cannot be in the past");
          }
      }
      

Test de l'application

Pour tester la logique de validation, l'application doit être exécutée en entrant des valeurs qui provoqueront l'échec de la validation.

Pour tester l'application

  1. Appuyez sur F5.

  2. Dans la grille qui affiche les commandes, modifiez la colonne RequiredDate d'une commande en choisissant une date qui précède la date du jour, puis naviguez hors de l'enregistrement pour accepter la modification.

    La nouvelle valeur provoque l'échec de la validation et l'exception est levée comme prévu.

  3. Fermez le formulaire. (Arrêtez le débogage.)

Gestion de l'erreur de validation dans DataGridView

Le test de l'application a généré un message d'erreur du DataGridView demandant aux développeurs de gérer l'événement DataError. La procédure suivante indique comment gérer cet événement.

Pour gérer l'erreur de validation dans DataGridView

  1. Ouvrez Form1 dans l'éditeur de code.

  2. Sélectionnez OrdersDataGridView.

  3. Créez un gestionnaire d'événements pour l'événement DataError.

  4. Ajoutez le code pour afficher l'erreur. Le gestionnaire d'événements est comparable au suivant :

    Private Sub OrdersDataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles OrdersDataGridView.DataError
        MessageBox.Show(e.Exception.Message)
    End Sub
    
    private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
    {
        MessageBox.Show(e.Exception.Message);
    }
    

Ajout d'une validation pour les mises à jour d'une classe d'entité

Outre la vérification des valeurs lors des modifications, vous pouvez valider les données lors d'une tentative de mise à jour de toute une classe d'entité. La validation pendant une tentative de mise à jour vous permet de comparer les valeurs dans plusieurs colonnes si les règles métier le demandent. Par exemple, la procédure suivante indique comment vérifier que la société d'expédition correcte est utilisée si le fret est inférieur à une limite définie.

Pour valider des données pendant une mise à jour de classe d'entité

  1. Ouvrez le fichier Northwind.dbml dans le Concepteur O/R. (Double-cliquez sur le fichier Northwind.dbml dans l'Explorateur de solutions.)

  2. Comme vous ajoutez une capacité de validation lors de la mise à jour d'une classe Order complète, les méthodes partielles auxquelles vous devez accéder sont localisées dans la classe DataContext générée (NorthwindDataContext). Cliquez avec le bouton droit dans une zone vide du Concepteur O/R et cliquez sur Afficher le code.

    La classe partielle pour NorthwindDataContext s'ouvre dans l'éditeur de code.

  3. Placez le curseur dans la classe partielle NorthwindDataset.

  4. Pour les projets Visual Basic :

    1. Développez la liste Nom de la méthode (zone de liste déroulante(Déclarations)).

    2. Cliquez sur UpdateOrder.

    3. Une méthode UpdateOrder est ajoutée à la classe partielle NorthwindDataContext.

    4. Federal Shipping ne livre pas si la valeur Freight est inférieure à 10. Par conséquent, ajoutez le code suivant à l'intérieur de la méthode UpdateOrder pour garantir que la valeur entrée pour ShipVia n'est pas Federal Shipping si la valeur Freight est inférieure à 10 :

      If (instance.ShipVia = 3) And (instance.Freight < 10) Then
          Dim ErrorMessage As String = "Federal Shipping " & _
           "does not deliver for less than 10. " & _
           "You must use a different shipper."
          Throw New Exception(ErrorMessage)
      End If
      

    Pour les projets C# :

    1. Ajoutez le code suivant à la classe partielle NorthwindDataContext pour garantir que la valeur entrée pour ShipVia n'est pas Federal Shipping si la valeur Freight est inférieure à 10 :

      partial void UpdateOrder(Order instance)
      {
          if ((instance.ShipVia == 3) && (instance.Freight < 10))
          {
              string ErrorMessage = "Federal Shipping " +
                  "does not deliver for less than 10. " +
                  "You must use a different shipper.";
              throw new System.Exception(ErrorMessage);
          }
      }
      

Test de l'application

Pour tester la logique de validation, exécutez l'application et entrez des valeurs qui provoqueront que l'échec de la validation.

Pour tester l'application

  1. Appuyez sur F5.

  2. Dans la grille qui affiche les commandes, localisez un enregistrement pour lequel ShipVia a la valeur 3. Affectez à Freight la valeur 5 et naviguez en dehors de la zone pour accepter la modification.

    La validation n'étant pas effectuée tant que l'enregistrement n'a pas encore été soumis à la mise à jour, la validation n'échoue pas à ce stade.

  3. Cliquez sur le bouton Enregistrer du formulaire.

    À ce stade, la validation échoue et l'exception est levée.

  4. Fermez le formulaire. (Arrêtez le débogage.)

Étapes suivantes

Selon les spécifications de votre application, différentes étapes peuvent être exécutées après avoir ajouté des validations de classes d'entité LINQ to SQL. Cette application pourrait être améliorée de la manière suivante :

  • En créant plus de requêtes LINQ pour trier et filtrer les données. Pour plus d'informations, consultez Requêtes LINQ to SQL.

Voir aussi

Tâches

Procédure pas à pas : création de classes LINQ to SQL (Concepteur O/R)

Concepts

Nouveautés des données

Requêtes LINQ to SQL

Autres ressources

Concepteur Objet/Relationnel (Concepteur O/R)

LINQ to SQL

Procédures pas à pas LINQ to SQL