Message d’erreur pour l’annotation des données d’index dans EF

Bonjour, j’utilise Entity Framework 6.1.1, qui prend en charge la fonctionnalité d’annotation de données d’index. J’ai un champ défini dans ma classe d’entité comme:

[Index("scoreIndex", IsUnique=true)] public int score{ get; set; } 

Cela fonctionne bien. Cependant, j’essaie de comprendre comment afficher un message lorsque le score n’est pas unique. À l’heure actuelle, il ne fait qu’une exception. J’ai essayé le suivant

  [Index("scoreIndex", IsUnique=true, ErrorMessage="Score must be unique")] 

Mais il ne contient pas la définition de ErrorMessage pour cette classe d’annotation Index. Pouvez-vous s’il vous plaît me dire comment gérer le message d’exception afin qu’il le gère avec élégance?

IndexAtsortingbute n’est pas un atsortingbut de validation. C’est pourquoi il ne possède pas la propriété ErrorMessage et ne possède pas non plus la méthode IsValid () utilisée pour le valider par rapport à une plage de valeurs valides.

Cela signifie qu’il n’est pas conçu pour être validé comme les atsortingbuts de validation typiques (Required, MaxLength, etc.). L’atsortingbut IsUnique est simplement utilisé lors de la création de la table pour créer un index unique.

Si vous souhaitez utiliser des atsortingbuts, vous devez créer un atsortingbut personnalisé pour vérifier le caractère unique de l’index. Cet index hériterait bien sûr de la classe ValidationAtsortingbute et devrait accéder en interne à EF DbContext pour vérifier l’unicité du code de validation d’atsortingbut.

Si vous n’aimez pas cette approche d’annotation de données et qu’elle est trop complexe, vous pouvez gérer l’ DbUpdateException par la méthode SaveChanges () dans un bloc try-catch, décoder le message d’erreur et renvoyer un élément convivial dans votre modèle de vue. .

 try { using (var ac = new ApplicationDbContext()) { // Add non-unique data ac.SaveChanges(); } } catch (DbUpdateException ex) { // Handle index error }