Chaves alternativas (restrições exclusivas)Alternate Keys (Unique Constraints)

Observação

A configuração nesta seção é aplicável a bancos de dados relacionais em geral.The configuration in this section is applicable to relational databases in general. Os métodos de extensão mostrados aqui ficarão disponíveis quando você instalar um provedor de banco de dados relacional (devido ao pacote Microsoft.EntityFrameworkCore.Relational compartilhado).The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

Uma restrição unique é introduzida para cada chave alternativa no modelo.A unique constraint is introduced for each alternate key in the model.

ConvençõesConventions

Por convenção, o índice e a restrição que são apresentados para uma chave alternativa serão nomeados 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>. Para chaves compostas de alternativas <property name> se tornará uma lista de sublinhado separado de nomes de propriedade.For composite alternate keys <property name> becomes an underscore separated list of property names.

Anotações de dadosData Annotations

As restrições UNIQUE não podem ser configuradas usando as anotações de dados.Unique constraints can not be configured using Data Annotations.

API fluenteFluent API

Você pode usar a API Fluent para configurar o nome de índice e de restrição para uma chave alternativa.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; }
}