0

Dans ma base de données, j'ai une contrainte de clé composite unique (CustomerId, Name) sur une entité. Je veux tester si la contrainte unique est confirmée avant de soumettre des modifications à la base de données. L'utilisateur peut personnaliser l'attribut Name sur l'entité, donc je voudrais créer un validateur personnalisé qui valide la propriété name, mais en même temps, j'ai besoin d'accéder à la propriété CustomerId. Comment je fais ça?Comment créer un validateur personnalisé dans VAB qui teste deux propriétés à la fois?

Je utilise WCSF, ce qui signifie que je suis coincé dans Entlib 3.1 et le VAB inclus, mais je suppose qu'il est possible de passer au VAB d'EntLib 4.1 sans casser WCSF.

Cordialement, Egil.

Répondre

0

L'astuce consiste à créer un validateur pour votre entité, et non pour l'une des propriétés de cette entité. Vous pouvez écrire une auto validation de votre entité comme suit:

[HasSelfValidation] 
public class MyEntity 
{ 
    public int CustomerId { get; set; } 
    public string Name { get; set; } 

    [SelfValidation] 
    public void ValidateRange(ValidationResults results) 
    { 
     bool isUnique = [query the database here] 

     if (!isUnique) 
     { 
      results.AddResult(new ValidationResult(
       "CustomerId and Name are not unique", this, "", "", null)); 
     } 
    } 
} 

Je dois dire que je ne suis pas familier avec le jeu de fonctions 3.1 VAB, donc je ne suis pas 100% sûr que cela fonctionne sur 3.1. Cela fonctionne sur 4.1 cependant. Si vous n'aimez pas la validation automatique, vous pouvez également écrire un validateur personnalisé et l'accrocher dans le fichier de configuration. Regardez this stackoverflow answer pour plus d'informations sur la façon de procéder.

Questions connexes