Create a migration
O Entity Framework Migrations monitora as alterações na estrutura do banco de dados ao longo do tempo. Com ele é possível desfazer (rollback) mudanças no banco de dados ou criar um novo banco de dados com base na estrutura de outro banco de dados já existente. Com o Migrations você tem um log completo de modificações no seu banco de dados, como inclusão e remoção de colunas e tabelas, por exemplo.
No capítulo anterior você adicionou a tabela Items ao DbContext. Como agora o DbContext manipula uma tabela que não existe no banco de dados, você precisar criar o Migrations para atualizar o banco de dados:
dotnet ef migrations add AddItemsO comando acima cria um Migrations chamado AddItems analisando todas as alterações que você fez no DbContext.
Se por acaso ocorrer o erro
No executable found matching command "dotnet-ef", verifique se você está no diretório correto. O comando acima precisa ser executado no diretório raiz do projeto (o diretório no qual o arquivoProgram.csestá).
Agora verifique o diretório Data/Migrations e você verá uma série de novos arquivos criados:

O primeiro arquivo Migrations (com nome 00_CreateIdentitySchema.cs) foi criado e aplicado com o comando dotnet new. Seu novo Migrations AddItem está com a data/hora de criação no nome do arquivo.
Você pode ver a lista de Migrations criados com o comando
dotnet ef migrations list.
Se você abrir seu arquivo Migrations, verá dois métodos chamados Up e Down:
Data/Migrations/_AddItems.cs
O método Up é executado quando você aplica o Migrations no banco de dados. Como você incluiu um DbSet<TodoItem> ao DbContext, o Entity Framework Core criará uma tabela Items (com colunas equivalentes às propriedades da entidade TodoItem) quando você aplicar este Migrations.
O método Down faz o contrário: se você precisar desfazer (rollback) o Migrations, a tabela Items será apagada.
Solução Alternativa (Workaround) para as Limitações do SQLite
O SQLite possui algumas limitações com o Migrations. Até que estas limitações sejam solucionadas, utilize a solução alternativa abaixo:
Comente ou remova as linhas com o comando
migrationBuilder.AddForeignKeyno métodoUp.Comente ou remova quaisquer linhas com o comando
migrationBuilder.DropForeignKeyno métodoDown.
Se você utilizar um banco de dados relacional completo, como o SQL Server ou o MySQL, esta solução alternativa (vulgo "hack") não é necessária.
Aplicando o Migrations
O último passo para criar Migrations é efetivamente aplicá-los ao banco de dados:
O comando acima fará com que o Entity Framework Core de fato crie a tabela Items no banco de dados.
Se você precisar efetuar rollback do banco de dados, você terá de fornecer o nome do Migrations anterior:
dotnet ef database update CreateIdentitySchemaEste comando executará os métodosDownde todos os Migrations mais recentes do que o Migrations que você especificou.Se você precisar apagar o banco de dados por completo para iniciar do zero no Migrations atual, utilize o comando
dotnet ef database dropseguido pelo comandodotnet ef database update.
Pronto! Agora o banco de dados e o DbContext estão preparados para uso. A seguir, você utilizará o DbContext na camada de serviço.
Last updated
Was this helpful?