Je ne trouve pas de moyen d'ajouter une contrainte unique à mon champ avec l'attribut using:
public class User
{
[Required]
public int Id { get; set; }
[Required]
// [Index("IX_FirstAndSecond", 2, IsUnique = true)] not supported by core
public string Email { get; set; }
[Required]
public string Password { get; set; }
}
J'utilise ces packages:
"Microsoft.EntityFrameworkCore": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
Réponses:
Sur EF Core, vous ne pouvez pas créer d'index à l'aide d'annotations de données, mais vous pouvez le faire à l'aide de l'API Fluent.
Comme ça dans votre
{Db}Context.cs
:... ou si vous utilisez la surcharge avec buildAction:
Vous pouvez en savoir plus ici: Index
la source
HasAlternateKey
De plus, si vous souhaitez créer des contraintes uniques sur plusieurs colonnes, vous pouvez simplement le faire (en suivant le lien @ Sampath )
la source
Solution pour EF Core
La table DB ressemblera à ceci:
Référez-vous à la documentation EF Core
la source
If you just want to enforce uniqueness of a column then you want a unique index rather than an alternate key. In EF, alternate keys provide greater functionality than unique indexes because they can be used as the target of a foreign key.
L'OP demande s'il est possible d'ajouter un attribut à une classe d'entité pour une clé unique. La réponse courte est que c'est possible, mais pas une fonctionnalité prête à l'emploi de l'équipe EF Core. Si vous souhaitez utiliser un attribut pour ajouter des clés uniques à vos classes d'entité Entity Framework Core, vous pouvez faire ce que j'ai publié ici
la source
Pour quelqu'un qui essaie toutes ces solutions mais ne fonctionne pas, essayez celle-ci, cela a fonctionné pour moi
la source
Pour l'utiliser dans EF Core via la configuration du modèle
la source
Aucune de ces méthodes n'a fonctionné pour moi dans .NET Core 2.2, mais j'ai pu adapter un peu de code que j'avais pour définir une clé primaire différente pour fonctionner à cette fin.
Dans l'exemple ci-dessous, je veux m'assurer que le champ OutletRef est unique:
Cela ajoute l'index unique requis dans la base de données. Cependant, il ne permet pas de spécifier un message d'erreur personnalisé.
la source
Nous pouvons ajouter un index de clé unique en utilisant une API fluide. Le code ci-dessous a fonctionné pour moi
la source
Le noyau EF prend en charge plusieurs clés uniques
N'oubliez pas d'exécuter la commande ef core pour effectuer la migration et mettre à jour la base de données
la source