Clés secondaires (contraintes uniques)Alternate Keys (Unique Constraints)

Note

La configuration de cette section s’applique aux bases de données relationnelles en général.The configuration in this section is applicable to relational databases in general. Les méthodes d’extension indiqués ici devient disponibles lorsque vous installez un fournisseur de base de données relationnelle (en raison de l’élément partagé Microsoft.EntityFrameworkCore.Relational package).The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

Une contrainte unique est introduite pour chaque clé secondaire dans le modèle.A unique constraint is introduced for each alternate key in the model.

ConventionsConventions

Par convention, l’index et des contraintes qui ont été introduites pour une autre clé seront nommés AK_<type name>_<property name>.By convention, the index and constraint that are introduced for an alternate key will be named AK_<type name>_<property name>. Pour les clés composites autre <property name> devient une liste séparée par des traits de soulignement de noms de propriétés.For composite alternate keys <property name> becomes an underscore separated list of property names.

Annotations de donnéesData Annotations

Contraintes unique ne peuvent pas être configurés à l’aide des Annotations de données.Unique constraints can not be configured using Data Annotations.

API FluentFluent API

Vous pouvez utiliser l’API Fluent pour configurer le nom de contrainte et d’index pour une autre clé.You can use the Fluent API to configure the index and constraint name for an alternate key.

class MyContext : DbContext
{
    public DbSet<Car> Cars { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Car>()
            .HasAlternateKey(c => c.LicensePlate)
            .HasName("AlternateKey_LicensePlate");
    }
}

class Car
{
    public int CarId { get; set; }
    public string LicensePlate { get; set; }
    public string Make { get; set; }
    public string Model { get; set; }
}