Restrições de chave estrangeiraForeign Key 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 foreign key é introduzida para cada relação no modelo.A foreign key constraint is introduced for each relationship in the model.

ConvençõesConventions

Por convenção, as restrições de chave estrangeira são nomeadas FK_<dependent type name>_<principal type name>_<foreign key property name>.By convention, foreign key constraints are named FK_<dependent type name>_<principal type name>_<foreign key property name>. Para chaves estrangeiras compostas <foreign key property name> torna-se uma lista de sublinhado separado dos nomes de propriedade de chave estrangeira.For composite foreign keys <foreign key property name> becomes an underscore separated list of foreign key property names.

Anotações de dadosData Annotations

Nomes de restrição de chave estrangeira não podem ser configurados usando as anotações de dados.Foreign key constraint names cannot be configured using data annotations.

API fluenteFluent API

Você pode usar a API Fluent para configurar o nome de restrição de chave estrangeira para uma relação.You can use the Fluent API to configure the foreign key constraint name for a relationship.

class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Post>()
            .HasOne(p => p.Blog)
            .WithMany(b => b.Posts)
            .HasForeignKey(p => p.BlogId)
            .HasConstraintName("ForeignKey_Post_Blog");
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}