Je souhaite appliquer la contrainte Unique dans une table et j'utilise Entity Framework Code-First.
Est-il possible d'ajouter une contrainte unique en utilisant EF 6, car je crois que dans les versions antérieures, ce n'était pas possible.
Il semble que la fonction de contrainte unique qui devait sortir avec la version 6 soit passée à 6.1.
Avec EF 6.1, vous pouvez définir une contrainte à l'aide de l'attribut Index comme indiqué ci-dessous:
[Index("IX_FirstAndSecond", 1, IsUnique = true)]
public int FirstColumn { get; set; }
[Index("IX_FirstAndSecond", 2, IsUnique = true)]
public int SecondColumn { get; set; }
OR
Vous pouvez utiliser l'API Fluent comme indiqué ici dans MSDN
Disons que vous voulez ajouter la contrainte Unique sur un seul attribut , vous pouvez faire comme suit, à partir d'EF6.1
[Index(IsUnique = true)]
public string Username { get; set; }
Si vous avez plusieurs champs liés au même index, vous allez utiliser:
Index à plusieurs colonnes
Les index qui s'étendent sur plusieurs colonnes sont spécifiés en utilisant le même nom dans plusieurs annotations d'index pour une table donnée. Lorsque vous créez des index multi-colonnes, vous devez spécifier un ordre pour les colonnes de l'index. Par exemple, le code suivant crée un index multi-colonnes sur Rating et BlogId appelé IX_BlogAndRating. BlogId est la première colonne de l'index et Rating est la deuxième.
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
[Index("IX_BlogIdAndRating", 2)]
public int Rating { get; set; }
[Index("IX_BlogIdAndRating", 1)]
public int BlogId { get; set; }
}
Veuillez vous référer à ce lien pour plus d'informations.