Olá pessoal, tudo bem? Espero que tenham gostado das novidades apresentadas no artigo Novidades no Entityframework 7, porque as novidades não param por ai :). Para quem já trabalha há algum tempo ou mesmo para os curiosos em estudar e mexer com Code-First, trabalhar com o Code-First Migration Commands não é nenhuma novidade e não tem nenhum bixo de sete cabeças :).

Muitos ainda tem o costume de trabalhar com o velho e famoso arquivo .edmx, ou por comodismo, ou por aversão mudanças ou por pura praticidade. Mas eu posso garantir para os aversos a mudanças: EXPERIMENTEM MUDAR!!! Uma vez migrado seu código para POCO/Code-First, o controle das suas classes de dominio será muito mais fácil, as mudanças serão mais controladas, a aplicação de padrões e conceitos do DDD como: Bounded Context, Context Map (temos de um artigo futuro) serão muito mais fáceis de serem aplicados, além de que não correremos o risco de atualizarmos o arquivo .edmx (câncer de de uma aplicação :D) e quebrar toda e qualquer customização e configuração que foi realizada para um determinado projeto. Outro ponto negativo – observado da ótica dos conceitos e práticas do DDD – que temos observado utilizando as classes mapeadas dentro de um arquivo .edmx, é a quantidade de classes anêmicas que temos (tema para um próximo artigo sobre :)), as quais são apenas representações do banco, dentro de sua aplicação e mais nada.

Bom, voltando ao assunto! A questão de se trabalhar com Code-First através dos comandos utilizados no console PM(Package Manager) dão ao desenvolvedor uma maior facilidade em alterar o que for necessário nas classes de dominio, flexibilidade em não sair do visual studio e visualizar as alterações e focar no código, 100% no código do negócio da aplicação. Antes de falarmos sobre a introdução dos novos comandos Migration para o EF 7, vou apresentar e explicar alguns dos comandos Migration mais utilizados no dia-a-dia do desenvolvimento de um projeto que utiliza EF 6.1.X.

Quando estamos de frente ao console PM, nos perguntamos:E agora? O que eu posso digitar? O que é aceito aqui? Quais comandos estão disponíveis e quais são os parâmetros que podemos utilizar? É isso que vou mostrar agora pra vocês.

Antes de mais nada, todo e qualquer comando que você utilize no console PM, é baseado em Powershell script, então existe um padrão a ser utilizado nos comandos. Quando tivermos dúvidas sobre algum comando, não tenha mais medo ;):

  1. Get-Help {nome do comando} – examples- O comando get-help utilizando o parâmetro -examples retorna exemplos de aplicações sobre o comando Migration desejado.
  2. Get-Help {nome do comando} -detailed- Já o parâmetro -detailed retorna a descrição do comando, uma sinopse e exemplos de aplicação, bem como os parâmetros e suas descrições.
  3. Get-Help {nome do comando} -full- O parâmetro** -full** retorna tudo o que o parâmetro -detailed retorna, mais informações técnicas sobre os parâmetros do comando.

Experimente executar o comando: PM> Get-Help Update-Database -detailed. Para os amantes do EF 6.1.x os comandos mais utilizados são: