Migrations
Introdução
Nesta seção faremos uso conceitos abordados na documentação de arquitetura do projeto de Migrations.
Executando o projeto de migrations
O projeto de Migrations está localizado no diretório "..\Infrastructure\Data\Osb.Core.Infrastructure.Data.Migrations". Certifique-se que o código do projeto está atualizado e configure a string de conexão com a base de dados do PostgreSQL no arquivo appsettings.json.
- A string de conexão deve ser configurada na variável "core" dentro de "ConnectionStrings";
- Informe a versão da migration mais atual na variável "VersionMigration" dentro de "Settings". Aqui é possível escolher a versão da migration a ser executada. Tenha ciência que sua execução funciona de forma em cadeia, ou seja, a migration mais recente executará todas as suas anteriores antes dela.
- Abra o projeto das migrations em um console, e execute o comando:
dotnet run
- Caso haja algum problema na versão, ela não é persistida.
- Para executar a função Up() digita-se 1 realizando alterações nas tabelas, colunas, tipos de dados, procedures, etc. No caso da opção 2, Down(), as alterações da migration são desfeitas.
Após os procedimentos realizados, a base de dados do PostgreSQL deve estar preenchida com as estruturas de dados para o funcionamento das demais aplicações.
Criação de migrations
Para criação dos arquivos de migrations existem algumas orientações que devem ser consideradas. Vamos começar pela nomenclatura dos arquivos.
Nomenclatura dos arquivos
- Todo arquivo(classe) deve ter a letra V (maiúscula) no início;
- Após o prefixo deve ter a data (começando pelo ano, mês e dia) e a hora (com segundos). É importante usar a data atual para garantir que a migration nova seja mais atual em relação as anteriores;
- Em seguida coloca-se um "_" (underline) seguido de uma "palavra reservada", algo que ajude na identificação da migration. Pode ser uma palavra em relação as atualizações que ela realizará, ao time que a desenvolveu ou a tarefa a qual ela pertence;
- Por fim, coloca-se mais um "_" (underline) seguido de um “V” e o número da versão da migration que está sendo criada;
Observe a imagem:
V - início
2022 - ano
09 - mês
01 - dia
17 - hora
57 - minutos
01 - segundos
"_" - underline para separar
"palavra reservada"
"_" - underline para separar
V - letra maiúscula
0 - versão
.cs - extensão do arquivo
Veja o resultado do arquivo do exemplo: V20210901175701_Migration_V0.cs
Criando uma migration
A versão real da migration deve estar dentro da classe e é composta segundo o padrão abaixo:
- Podemos criar um arquivo .cs de migration e adicionar a versão dela: data(ano/mês/dia) e hora(hora/minuto/segundo). Veja a imagem abaixo:
- Dentro da pasta de Scripts, devemos ter as procedures necessárias para versão. O nome da pasta se dá na mesma nomenclatura do arquivo da migration. Veja a imagem a seguir:
- No arquivo .cs efinimos o diretório dos scripts.
- Criamos os métodos Up() e Down() na classe da nova migration. São métodos herdados da classe Migration. Observe o exemplo:
- Colocamos a versão da migration que a ser executada no appsettings.json.
- Por fim, podemos executar a migration conforme descrito na primeira seção desta página.
É possível verificar se a versão executada foi persistida. Para conferir, uma vez executado o Fluent Migrator é então criada uma tabela "VersionInfo" com todas as migrations correntes até o momento. Na imagem abaixo percebemos que a versão mais atual é a V5.
Lembre-se, a versão que estiver sendo criada deve ser superior a última versão da migration na base de dados, por isso utilizamos data e hora.
Referencias
(Migrações de esquema fácil em — do núcleo .NET por Manfred Lange — A startup — Média)
https://fluentmigrator.github.io/articles/intro.htmlhttps://medium.com/swlh/easy-schema-migrations-in-net-core-abd214fa054c
(FluentMigrator in ASP.Net Core - .Net Core Central)
https://dotnetcorecentral.com/blog/fluentmigrator/
(Documentação Oficial)
https://fluentmigrator.github.io/articles/intro.html
Updated about 2 years ago