Tabela de histórico de migrações personalizadasCustom Migrations History Table

Por padrão, o EF Core mantém o controle de quais migrações foram aplicadas ao banco de dados, gravando-os em uma tabela chamada __EFMigrationsHistory.By default, EF Core keeps track of which migrations have been applied to the database by recording them in a table named __EFMigrationsHistory. Por vários motivos, você talvez queira personalizar essa tabela para atender melhor às suas necessidades.For various reasons, you may want to customize this table to better suit your needs.

Importante

Se você personalizar a tabela de histórico de migrações depois de a aplicação de migrações, você é responsável por atualizar a tabela existente no banco de dados.If you customize the Migrations history table after applying migrations, you are responsible for updating the existing table in the database.

Nome do esquema e tabelaSchema and table name

Você pode alterar o esquema e o nome da tabela usando o MigrationsHistoryTable() método no OnConfiguring() (ou ConfigureServices() no ASP.NET Core).You can change the schema and table name using the MigrationsHistoryTable() method in OnConfiguring() (or ConfigureServices() on ASP.NET Core). Aqui está um exemplo que usa o provedor do EF Core do SQL Server.Here is an example using the SQL Server EF Core provider.

protected override void OnConfiguring(DbContextOptionsBuilder options)
    => options.UseSqlServer(
        connectionString,
        x => x.MigrationsHistoryTable("__MyMigrationsHistory", "mySchema"));

Outras alteraçõesOther changes

Para configurar aspectos adicionais da tabela, substituição e substituir específicas do provedor IHistoryRepository service.To configure additional aspects of the table, override and replace the provider-specific IHistoryRepository service. Aqui está um exemplo de alterar o nome da coluna para MigrationId Id no SQL Server.Here is an example of changing the MigrationId column name to Id on SQL Server.

protected override void OnConfiguring(DbContextOptionsBuilder options)
    => options
        .UseSqlServer(connectionString)
        .ReplaceService<IHistoryRepository, MyHistoryRepository>();

Aviso

SqlServerHistoryRepository está dentro de um namespace interno e pode mudar em versões futuras.SqlServerHistoryRepository is inside an internal namespace and may change in future releases.

class MyHistoryRepository : SqlServerHistoryRepository
{
    public MyHistoryRepository(HistoryRepositoryDependencies dependencies)
        : base(dependencies)
    {
    }

    protected override void ConfigureTable(EntityTypeBuilder<HistoryRow> history)
    {
        base.ConfigureTable(history);

        history.Property(h => h.MigrationId).HasColumnName("Id");
    }
}