Tabela de histórico de migrações personalizadas
Por padrão, o EF Core controla quais migrações foram aplicadas ao banco de dados gravando-as em uma tabela chamada __EFMigrationsHistory
. Por vários motivos, pode ser interessante personalizar essa tabela para atender melhor às suas necessidades.
Importante
Se você personalizar a tabela de Histórico de migrações após aplicar migrações, será responsável por atualizar a tabela existente no banco de dados.
Nome do esquema e da tabela
Você pode alterar o esquema e o nome da tabela usando o método MigrationsHistoryTable()
em OnConfiguring()
(ou ConfigureServices()
no ASP.NET Core). Veja um exemplo do uso do provedor do EF Core do SQL Server.
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer(
_connectionString,
x => x.MigrationsHistoryTable("__MyMigrationsHistory", "mySchema"));
Outras alterações
Para configurar outros aspectos da tabela, altere e substitua o serviço IHistoryRepository
específico do provedor. Veja um exemplo de alteração do nome da coluna MigrationId para Id no SQL Server.
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options
.UseSqlServer(_connectionString)
.ReplaceService<IHistoryRepository, MyHistoryRepository>();
Aviso
SqlServerHistoryRepository
está dentro de um namespace interno e poderá mudar em versões futuras.
internal 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");
}
}