Chaves (primárias)Keys (primary)

Uma chave serve como o principal identificador exclusivo para cada instância de entidade.A key serves as the primary unique identifier for each entity instance. Ao usar um banco de dados relacional mapeia para o conceito de um chave primária.When using a relational database this maps to the concept of a primary key. Você também pode configurar um identificador exclusivo que não é a chave primária (consulte chaves alternativas para obter mais informações).You can also configure a unique identifier that is not the primary key (see Alternate Keys for more information).

ConvençõesConventions

Por convenção, uma propriedade chamada Id ou <type name>Id serão configurados como a chave de uma entidade.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; }
}

Anotações de dadosData Annotations

Você pode usar anotações de dados para configurar uma única propriedade para ser a chave de uma entidade.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 fluenteFluent API

Você pode usar a API Fluent para configurar uma única propriedade para ser a chave de uma entidade.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; }
}

Você também pode usar a API Fluent para configurar várias propriedades para ser a chave de uma entidade (conhecida como uma chave composta).You can also use the Fluent API to configure multiple properties to be the key of an entity (known as a composite key). Chaves compostas só podem ser configuradas usando a API Fluent - convenções nunca irá configurar uma chave composta, e você não pode usar anotações de dados para configurar um.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; }
}