2011-02-06 3 views
9

Vous êtes curieux de savoir comment valider efficacement qu'une propriété donnée d'un modèle CodeFirst est unique. Exemple classique étant le nom d'utilisateur ou le nom d'affichage d'un membre.EF Codefirst valider une propriété unique?

Traditionnellement, je pourrais le faire en définissant une contrainte Unique dans la base de données, ou en effectuant une recherche lors d'une tentative d'insertion. Je sais comment ajouter manuellement ces éléments dans la base de données elle-même après la génération, je veux juste voir s'il y a un moyen de le faire dans le cadre du mappage de schéma fourni par le framework.

MISE À JOUR Je trouve que je peux passer outre la méthode ValidateEntity sur la DbContext, qui conceptuellement me permettre de faire une recherche et invalident l'objet pour empêcher la sauvegarde. Je serais toujours curieux de savoir s'il existe un moyen d'appliquer une contrainte unique ou similaire dans la base de données

Répondre

6

Le code Premier (et EF en général) ne prend toujours pas en charge les contraintes uniques. En this post j'ai montré une façon de les créer en même temps que votre base de données est créée par Code First (via la méthode SQLCommand dans une classe Initializer personnalisée) mais ce n'est pas vraiment différent de la créer manuellement. L'autre façon est ValidateEntity que vous avez suggéré, mais je créerais quand même les contraintes uniques sur la base de données.

+0

Pas parfait, mais assez bon pour mes fins, merci ! – Paul

0

J'ai posté à ce sujet à code project

En général, cela dépend des attributs que vous avez sur les classes pour générer vos index uniques

Questions connexes