Procédure pas à pas : ajout d'une validation à des classes d'entité
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 à SQL [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 :
Projet créé dans Procédure pas à pas : création de classes LINQ to SQL (Concepteur O/R).
avoir accès à l'exemple de base de données Northwind. Pour plus d'informations, consultez Comment : installer des exemples de bases de données.
Notes
Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués 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, voir Paramètres Visual Studio.
Ouverture de la solution ORDesignerWalkthrough
Pour ouvrir la solution ORDesignerWalkthrough
Dans le menu Fichier, pointez sur Ouvrir, cliquez sur Projet/Solution, puis naviguez vers l'emplacement du fichier ORDesignerWalkthrough.sln.
Notes
Le fichier ORDesignerWalkthrough.sln est créé dans la rubrique Procédure pas à pas : création de classes LINQ to SQL (Concepteur O/R) et est indispensable pour pouvoir suivre cette procédure pas à pas.Effectuez les étapes décrites dans la rubrique Procédure pas à pas : création de classes LINQ to SQL (Concepteur O/R), en enregistrant la solution lorsque vous avez terminé si ce n'est pas encore fait.
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
Ouvrez le fichier Northwind.dbml dans le Concepteur O/R. (Double-cliquez sur le fichier Northwind.dbml dans l'Explorateur de solutions.)
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.
Placez le curseur dans la classe partielle Order .
Pour les projets Visual Basic :
Développez la liste Nom de la méthode (zone de liste déroulante**(Déclarations)**).
Cliquez sur OnRequiredDateChanging.
Une méthode OnRequiredDateChanging est ajoutée à la classe partielle Order.
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# :
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
Appuyez sur F5.
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.
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
Ouvrez Form1 dans l'éditeur de code.
Sélectionnez OrdersDataGridView.
Créez un gestionnaire d'événements pour l'événement DataError.
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é
Ouvrez le fichier Northwind.dbml dans le Concepteur O/R. (Double-cliquez sur le fichier Northwind.dbml dans l'Explorateur de solutions.)
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.
Placez le curseur dans la classe partielle NorthwindDataset.
Pour les projets Visual Basic :
Développez la liste Nom de la méthode (zone de liste déroulante**(Déclarations)**).
Cliquez sur UpdateOrder.
Une méthode UpdateOrder est ajoutée à la classe partielle NorthwindDataContext.
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# :
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
Appuyez sur F5.
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.
Cliquez sur le bouton Enregistrer du formulaire.
À ce stade, la validation échoue et l'exception est levée.
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
Autres ressources
Concepteur Objet/Relationnel (Concepteur O/R)
Nouveautés du développement d'applications de données dans Visual Studio 2012