7
respostas

Não consigo atualizar minhas migrações do meu banco de dados

Estou trabalhando num projeto, possui mais de 13 classes, sendo que em uma dessas classes, eu errei o nome de dois atributos e gostaria de renomeá-los.

Porém o exemplo do video onde o instrutor usa somente uma classe é bem funcional, eu fiz e funcionou. Mas quando ja tenho várias classes criadas, a coisa fica diferente.

Eu sigo o passo-a-passo igualzinho o do video:

1 - Deleto a tabela EFHistory... 2 - Deleto os migrations (que eu criei pessoalmente para criar as tabelas no banco)... 3 - Crio um migration chamado Inicial com os atributos com nomes errados, conforme o do video... 4 - Altero o nome dos atributos que quero corrigí-los e crio um migration chamado Atualizado... Porém a diferença que observei foi nessa parte... No video do instrutor, quando ele gera um novo migration, o mesmo aparece algumas coisas relacionada a renamed, informando que o atributo foi renomeado. Porém quando crio um novo, da um monte de coisa, o console exibe a seguinte mensagem e nada do tipo relacionado ao video.

An operation was scaffolded that may result in the loss of data. Please review the migration for accuracy.
To undo this action, use Remove-Migration.

LINK DA MIGRATION Atualizado criado: https://ghostbin.com/paste/5chvf

7 respostas

Olá Renan,

quando você vai renomear o atributo é algum atributo que está sendo usado para fazer um relacionamento com outra classe? Porque pelo link que você mandou da migration, parece que na verdade ele teve que corrigir todos os relacionamentos do sistema com a mudança que foi feita. E provavelmente como ele teve que corrigir um monte de nome de coluna de relacionamento, e consequentemente as FKs, não foi um simples rename no nome da coluna.

Olá Lucas,

Com base na sua análise, fui fazer um teste para mudar um nome de um atributo que não se relaciona com nenhuma tabela e mesmo assim, o migration não veio com a tal linha escrito renameTo (Fazendo referência para o novo nome)

Qual o banco de dados que você está usando? As vezes dependendo do banco ele tem umas limitações de comandos de migrations que ele não consegue fazer. Por exemplo, este link mostra que o SQLite não tem o comando RenameColumn disponível.

Olha cara, eu to usando por aqui para gerenciar meu banco: https://prnt.sc/i8sz1w

E quando eu fui no menu Project > Add New DataSource... eu selecionei essa opção abaixo:

Microsoft SQL Server Database File (SqlClient)

Estranho, você está usando o SQL Server, em teoria ele tem suporte para o RenameColumn. Quando você foi renomear as Propriedades chegou a usar o atalho de rename do Visual Studio? Que ele deveria ter usado o rename mesmo...

Me manda da classe que você alterou a Propriedade antes e depois da mudança para eu dar uma olhada e a migration que foi gerada.

Quando você foi renomear as Propriedades chegou a usar o atalho de rename do Visual Studio? Quando você diz isso, você quer dizer o atalho Ctrl R, R? Se sim, não usei!

Classe antes da alteração:

https://ghostbin.com/paste/3x325

Classe depois da alteração:

https://ghostbin.com/paste/bu2fu

A linha que quero alterar é a 16

Migration criada: https://ghostbin.com/paste/eavwa

Olá Renan,

no exemplo que você mandou, a propriedade que está mexendo é justamente a coluna que faz o relacionamento da FlareNetFittings com a PipeFittings. Chuto que por conta dele ter que inclusive arrumar as foreigns keys, acaba apagando e adicionando ao invés de renomear.

Veja se renomeando apenas a propriedade Quantity para um outro nome, sem mexer em mais nenhuma outra propriedade, o sistema faz a migration com RenameColumn.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software