133 votes

Première colonne unique du code cadre de l'entité

J'utilise Entity Framework 4.3 et Code Fist.

J'ai une classe

public class User
{
   public int UserId{get;set;}
   public string UserName{get;set;}
}

Comment dire à Entity Framework que UserName doit être unique lors de la création d'une table de base de données ? Je préférerais utiliser des annotations de données au lieu du fichier de configuration si possible.

28voto

Ladislav Mrnka Points 218632

EF ne prend pas en charge les colonnes uniques sauf les clés. Si vous utilisez les Migrations EF, vous pouvez forcer EF à créer un index unique sur la colonne UserName (dans le code de migration, pas par une annotation) mais l'unicité sera appliquée uniquement dans la base de données. Si vous essayez d'enregistrer la valeur en double, vous devrez attraper l'exception (violation de contrainte) lancée par la base de données.

13voto

Anas Alweish Points 1448

Dans EF 6.2 en utilisant FluentAPI, vous pouvez utiliser HasIndex()

modelBuilder.Entity<User>().HasIndex(u => u.UserName).IsUnique();

5voto

Robba Points 486

Notez que dans Entity Framework 6.1 (actuellement en version bêta) prend en charge IndexAttribute pour annoter les propriétés d'index qui donneront automatiquement un index (unique) dans vos Migrations Code First.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X