Partager via


Comment : Valider les données

Vous pouvez appliquer des règles de validation à une entité ou table pour vous assurer que les données écrites dans la source de données sont correctement mises en forme.Une règle de validation est une condition ou contrainte à laquelle les données de votre application doivent se conformer.Vous pouvez ajouter un ou plusieurs règles de validation à une entité ou table dans LightSwitch.Si un utilisateur ajoute ou modifie des données et que celles-ci ne sont pas conformes aux règles de validation, LightSwitch affiche une erreur.L'erreur de validation doit être corrigée avant qu'un utilisateur puisse valider les données.

L'illustration suivante montre un message d'erreur de validation.

Message d'erreur de validation

LightSwitch inclut plusieurs règles de validation intégrées.Vous pouvez configurer ces règles et les appliquer à une entité ou table sans écrire de code.Vous pouvez également utiliser le code pour définir des règles de validation personnalisées.

Cette rubrique contient les sections suivantes :

  • Application de règles de validation prédéfinies à un champ

  • Application de règles de validation personnalisées à un champ

  • Application de règles de validation personnalisées à des données dans un écran

  • Application de règles de validation qui s'exécutent lorsque les données sont enregistrées

lien vers la vidéo Pour une démonstration vidéo connexe, consultez Comment faire pour écrire des règles d'entreprise pour la validation et les champs calculés dans une application LightSwitch ? (page éventuellement en anglais).

Application de règles de validation prédéfinies à un champ

LightSwitch inclut plusieurs règles de validation intégrées que vous pouvez utiliser sans écrire de code personnalisé.Vous pouvez appliquer ces règles à des champs de données individuels ou à tout type de mise à jour que les utilisateurs apportent aux données dans un écran.

Pour appliquer une règle de validation prédéfinie à un champ

  1. Dans l' Explorateur de solutions, double-cliquez sur l'entité ou la table à laquelle vous voulez appliquer des règles de validation.

    L'entité ou la table s'ouvre dans le Concepteur de données.

  2. Dans le Concepteur de données, sélectionnez le champ que vous voulez valider.

  3. Dans la fenêtre Propriétés, dans la section Validation, définissez la valeur de l'une des propriétés.

    Pour plus d'informations sur les propriétés de validation, consultez Référence : propriétés du concepteur de données.

Application de règles de validation personnalisées à un champ

Vous pouvez définir des règles de validation personnalisées en écrivant le code.Vous pouvez spécifier quand ces règles de validation sont appliquées par LightSwitch.Par exemple, vous pouvez spécifier qu'une règle de validation sur un champ est appliquée immédiatement après qu'un utilisateur a tapé une valeur.Vous pouvez également spécifier qu'une entité ou une table est évaluée uniquement une fois que tous ses champs contiennent une valeur.Ce modèle est approprié lorsque la validité d'une valeur dans un champ repose sur une valeur valide dans un autre champ de la même entité ou table.

Pour appliquer une règle de validation à un champ

  1. Dans l' Explorateur de solutions, double-cliquez sur l'entité ou la table à laquelle vous voulez appliquer des règles de validation.

    L'entité ou la table s'ouvre dans le Concepteur de données.

  2. Dans le Concepteur de données, sélectionnez le champ que vous voulez valider.

  3. Dans la fenêtre Propriétés, cliquez sur Validation personnalisée.

    L' Éditeur de code s'ouvre et génère une méthode nommée FieldName[_Validate].

  4. Ajoutez le code à la méthode FieldName[_Validate].

    Pour appliquer une règle de validation immédiatement après qu'un utilisateur a fourni une valeur de champ, appelez la méthode AddPropertyError du paramètre results.

    L'exemple suivant affiche un message de validation après qu'un utilisateur a affecté au champ ShippedDate de l'entité Order une date ultérieure à celle du jour.

    Private Sub ShippedDate_Validate(results As EntityValidationResultsBuilder)
        If Me.ShippedDate > DateTime.Today Then
            results.AddPropertyError _
                ("Shipped date cannot be later than today")
        End If
    
    End Sub
    
    partial void ShippedDate_Validate(EntityValidationResultsBuilder results)
    {
        if (this.ShippedDate > DateTime.Today)
        {
            results.AddPropertyError("Shipped date cannot be later than today");
        }
    
    }
    

    Notez que vous pouvez mettre en surbrillance d'autres propriétés pour la validation.Par exemple, vous pouvez écrire le code de validation qui s'exécute lorsqu'un utilisateur modifie le code postal d'un client.Si vous passez la propriété City comme paramètre à la méthode AddPropertyError, LightSwitch mettra en surbrillance le champ City.Le texte de votre message d'erreur de validation peut inviter l'utilisateur à taper le nom d'une ville qui correspond au nouveau code postal.

    [!REMARQUE]

    Par défaut, les mises à jour ne peuvent pas être validées dans une source de données tant qu'elles ne sont pas conformes aux règles de validation.Pour permettre aux utilisateurs de valider des mises à jour non évaluées, utilisez la méthode AddPropertyResult à la place de la méthode AddPropertyError.Pour le deuxième paramètre de la méthode AddPropertyResult, passez ValidationSeverity.Informational ou ValidationSeverity.Warning.

    Pour appliquer une règle de validation sur une entité ou une table, par exemple, lorsqu'un utilisateur modifie une valeur dans un champ qui repose sur une valeur valide dans un autre champ, appelez la méthode AddEntityError du paramètre results.L'exemple suivant compare la valeur du champ RequiredDate à la valeur du champ OrderDate.Si la date de commande est ultérieure à la date requise, ce code affiche un message d'erreur de validation.

    Private Sub RequiredDate_Validate(results As EntityValidationResultsBuilder)
        If Me.RequiredDate < Me.OrderDate Then
            results.AddEntityError _
                ("Required data cannot be earlier than the order date")
        End If
    
    End Sub
    
    partial void RequiredDate_Validate(EntityValidationResultsBuilder results)
    {
        if (this.RequiredDate < this.OrderDate)
        {
            results.AddEntityError
                ("Required data cannot be earlier than the order date"); 
        }
    
    }
    

Application de règles de validation personnalisées à des données dans un écran

Vous pouvez spécifier des règles de validation personnalisées qui s'appliquent à un écran entier en ajoutant le code personnalisé à la méthode <nom d'entité ou table>[_Validate] dans le fichier de code de l'écran.Votre code personnalisé s'exécute lorsqu'un utilisateur modifie des données dans l'écran (par exemple, lorsqu'il ajoute ou supprime des données).Ces règles s'exécutent avant que les données puissent être enregistrées.

Pour appliquer une règle de validation personnalisée à des données dans un écran

  1. Dans l' Explorateur de solutions, double-cliquez sur l'écran pour lequel vous voulez spécifier une règle de validation.

  2. En haut du Concepteur d'écran, cliquez sur Écrire le code.

    L' Éditeur de code s'ouvre.

  3. Dans le menu Déclarations, sélectionnez <nom d'entité ou table>[_Validate].

    Un bloc de code nommé <nom d'entité ou table>[_Validate] s'affiche dans le fichier de code.

  4. Ajoutez votre code de validation personnalisé à la méthode <nom d'entité ou table>[_Validate].

    Pour appliquer une règle de validation après qu'un utilisateur a ajouté, supprimé ou mis à jour une ligne de données, appelez la méthode AddScreenError du paramètre results.

    L'exemple suivant empêche la suppression de clients qui se trouvent aux États-Unis.

    Private Sub Customers_Validate _
        (results As Microsoft.LightSwitch.Framework.Client.ScreenValidationResultsBuilder)
        If Me.DataWorkspace.NorthwindData.Details.HasChanges Then
            Dim changeSet As EntityChangeSet = _
                Me.DataWorkspace.NorthwindData.Details.GetChanges()
    
            Dim entity As IEntityObject
    
            For Each entity In changeSet.DeletedEntities.OfType(Of Customer)()
    
                Dim cust As Customer = CType(entity, Customer)
                If cust.Country = "USA" Then
                    entity.Details.DiscardChanges()
                    results.AddScreenResult("Unable to remove this customer." & _
                        "Cannot delete customers that are located in the USA.", _
                         ValidationSeverity.Informational)
                End If
    
            Next
        End If
    
    End Sub
    
    partial void Customers_Validate(ScreenValidationResultsBuilder results)
    {
        if (this.DataWorkspace.NorthwindData.Details.HasChanges)
        {
            EntityChangeSet changeSet =
            this.DataWorkspace.NorthwindData.Details.GetChanges();
            foreach (IEntityObject entity in changeSet.DeletedEntities.OfType<Customer>())
            {
                Customer cust = (Customer)entity;
                if (cust.Country == "USA")
                {
                    entity.Details.DiscardChanges();
                    results.AddScreenResult("Unable to remove this customer. " +
                    "Cannot delete customers that are located in the USA.",
                    ValidationSeverity.Informational);
                }
            }
        }
    
    }
    

    [!REMARQUE]

    Par défaut, les mises à jour ne peuvent pas être validées dans une source de données tant qu'elles ne sont pas conformes aux règles de validation.Pour permettre aux utilisateurs de valider des mises à jour non évaluées, utilisez la méthode AddScreenResult à la place de la méthode AddScreenError.Pour le deuxième paramètre de la méthode AddScreenResult, passez ValidationSeverity.Informational ou ValidationSeverity.Warning.

Application de règles de validation qui s'exécutent lorsque les données sont enregistrées

Vous pouvez appliquer des règles de validation personnalisées lorsqu'un utilisateur enregistre des données ou lorsque votre code appelle la méthode SaveChanges d'une source de données.Ce type de validation s'exécute exclusivement sur la couche serveur.

Pour appliquer des règles de validation qui s'exécutent lorsque les données sont enregistrées

  1. Dans l' Explorateur de solutions, double-cliquez sur l'entité ou la table à laquelle vous voulez appliquer des règles de validation.

  2. Dans la barre de commandes du Concepteur de données, cliquez sur la flèche en regard de bouton Écrire le code, puis cliquez sur nom d'entité ou table[_Validate].

    L' Éditeur de code s'ouvre et génère une méthode nommée nom d'entité ou table[_Validate].

  3. Ajoutez votre code de validation personnalisé à la méthode nom d'entité ou table[_Validate].

    Appelez la méthode AddEntityError du paramètre results.

    L'exemple suivant vérifie l'état de crédit d'un client lorsqu'un utilisateur enregistre une commande.Si le crédit du client n'a pas encore été approuvé par le service de financement, un ValidationException est levé.

    Private Sub Orders_Validate _
        (entity As Order, results As  _
         Microsoft.LightSwitch.EntitySetValidationResultsBuilder)
        If Not CustomerCreditApproval(entity.Customer) Then
            results.AddEntityError("Customer Credit has not yet been approved")
        End If
    
    End Sub
    Private Function CustomerCreditApproval(ByVal entity As Customer) As Boolean
        'Some custom code to check the customer’s credit status.
        Return True
    
    End Function
    
            partial void Orders_Validate
                (Order entity, EntitySetValidationResultsBuilder results)
            {
                if (!CustomerCreditApproval(entity.Customer))
                {
                    results.AddEntityError
                        ("Customer Credit has not yet been approved");
                }
            }
    
            private bool CustomerCreditApproval(Customer entity)
            {
                //Some custom code to check the customer's credit status.
                return true;
            }
    
    

    [!REMARQUE]

    Par défaut, lorsque l'exception est levée, un message d'erreur s'affiche et les données restent dans l'ensemble de modifications actuel.Si vous voulez modifier ce comportement, vous pouvez gérer le ValidationException dans votre code.

Voir aussi

Tâches

Comment : Gérer les événements de données

Comment : Définir des champs de données

Concepts

Réalisation de tâches liées aux données à l'aide du code

Utilisation d'objets liés aux données dans le code

Écriture de code dans LightSwitch

Autres ressources

Vue d'ensemble de la validation des données dans les applications LightSwitch

Données : les informations de votre application