Clés (primaire)Keys (primary)

Une clé sert d’identificateur principal unique pour chaque instance d’entité.A key serves as the primary unique identifier for each entity instance. Lorsque vous utilisez une base de données relationnelle correspond à la notion d’un clé primaire.When using a relational database this maps to the concept of a primary key. Vous pouvez également configurer un identificateur unique qui n’est pas la clé primaire (consultez clés secondaires pour plus d’informations).You can also configure a unique identifier that is not the primary key (see Alternate Keys for more information).

ConventionsConventions

Par convention, une propriété nommée Id ou <type name>Id sera configuré en tant que la clé d’une entité.By convention, a property named Id or <type name>Id will be configured as the key of an entity.

class Car
{
    public string Id { get; set; }

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

    public string Make { get; set; }
    public string Model { get; set; }
}

Annotations de donnéesData Annotations

Vous pouvez utiliser des Annotations de données pour configurer une propriété unique pour être la clé d’une entité.You can use Data Annotations to configure a single property to be the key of an entity.

class Car
{
    [Key]
    public string LicensePlate { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}

API FluentFluent API

Vous pouvez utiliser l’API Fluent pour configurer une propriété unique pour être la clé d’une entité.You can use the Fluent API to configure a single property to be the key of an entity.

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

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Car>()
            .HasKey(c => c.LicensePlate);
    }
}

class Car
{
    public string LicensePlate { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}

Vous pouvez également utiliser l’API Fluent pour configurer plusieurs propriétés de la clé d’une entité (appelée une clé composite).You can also use the Fluent API to configure multiple properties to be the key of an entity (known as a composite key). Clés composites ne peuvent être configurés à l’aide de l’API Fluent : conventions d’installation ajoute jamais une clé composite, et vous ne pouvez pas utiliser des Annotations de données pour configurer une.Composite keys can only be configured using the Fluent API - conventions will never setup a composite key and you can not use Data Annotations to configure one.

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

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Car>()
            .HasKey(c => new { c.State, c.LicensePlate });
    }
}

class Car
{
    public string State { get; set; }
    public string LicensePlate { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}