Quand vous dites ValidationAttibute, voulez-vous dire utiliser DataAnnotations? Si oui, alors tout cela s'applique, sinon, désolé, j'ai mal compris et seulement une partie de cette volonté.
Je pense que votre meilleur pari est de le faire dans le référentiel ou BLL en utilisant votre clé unique pour l'enregistrement, au moins c'est comme ça que je l'ai fait. Récupère les valeurs précédentes de l'enregistrement et vérifie si elles ont changé. Si elles ont changé, exécutez vos vérifications d'unicité.
Si vous pouvez obtenir cette logique dans le ValidationAttribute, alors plus de puissance à vous, mais je ne suis pas sûr si unAttribut de validation serait la meilleure chose puisqu'il y a des moyens de les contourner. De ma compréhension de ces attributs, vous devez les utiliser uniquement comme compléments aux validations de logique métier et non comme la seule façon de valider votre modèle.
See here for more info on DataAnnotations
EDIT: assez juste, nous allons voir maintenant si je peux donner une réponse à vous aider :) Consultez ce lien, il est le code de vérification de l'unicité sur une propriété dans une table. LINQ à SQL assez approfondi, mais il semble que cela fonctionne bien. Vous devriez pouvoir décorer n'importe quelle propriété avec ceci juste comme utilisant les attributs <Required>
ou <StringLenght>
.
ASP.NET Forums
Les deux premières phrases ne sont pas sympas. Pourriez-vous préciser ce que l'unicité a à voir avec le suivi des changements? – jfar
Ce qu'il dit, c'est que si pour l'utilisateur un l'adresse email est [email protected] et que l'utilisateur met à jour son profil, il veut vérifier que l'adresse e-mail (exemple à titre d'exemple) est toujours unique. Cependant, si l'utilisateur n'a pas modifié son adresse e-mail, sa vérification unique échouera car [email protected] est déjà dans la base de données pour l'utilisateur en cours de mise à jour. – Tommy