Skip to content

Renomear coluna no Entity Framework Core

Algumas pessoas tem duvidas em como renomear coluna no Entity Framework Core que já foi criada no banco de dados. No artigo de hoje eu tiro essa duvida.

Se você alterou alguma propriedade de uma entidade e for gerar o migration, já deve ter notado que o EF vai entender que você deletou uma coluna e está criando outra. Para esses casos eu aconselho a criar um migration manual. Mas como?

Você já deve ter criado algum migration inicial, se não este artigo não faz sentido para você. Com isso, pegue o último migration que você gerou e copie os dois arquivos: NUMERO_Migration.cs e NUMERO_Migration.Designer.cs. Abaixo um exemplo que está no meu projeto.

Mas o que são esses dois arquivos?

Simples, o primeiro é a alteração a ser aplicada no seu banco e o segundo e a alteração para o seu arquivo ModelSnapshot.cs. Com o snapshot é que o migration sabe quais são as alterações que foram feitas, pois este fica com a foto do último migration “rodado”.

Pois bem, como você copiou as duas classes, você deverá editar seu nome para não ter conflito no projeto, renomeie para a data de hoje, hora e o nome do arquivo.

Aberto o primeiro arquivo, para renomear uma coluna basta inserir o comando abaixo no método UP

migrationBuilder.RenameColumn(

name: “DataDoCurso”,

newName: “InicioDoCurso”,

table: “CursoAberto”

);

Para quem não sabe, o método UP é quando nosso migration é aplicado. O método Down é quando o nosso migration é retirado. Com isso, no método Down eu coloquei o inverso da primeira renomeação.

migrationBuilder.RenameColumn(

name: “InicioDoCurso”,

newName: “DataDoCurso”,

table: “CursoAberto”

);

Se eu tiver que dar um rollback por causa de erro, a minha coluna voltará para o nome original.

Agora, no segundo arquivo copiado, vá até a entidade que foi modificada e altere o nome da coluna que foi renomeada para o novo nome.

modelBuilder.Entity(“Amesc.Dominio.Cursos.CursoAberto”, b =>

{

b.Property<int>(“Id”)

.ValueGeneratedOnAdd();

b.Property<int?>(“CursoId”);

b.Property<string>(“Empresa”);

b.Property<DateTime>(“FimDoCurso”);

b.Property<DateTime>(“InicioDoCurso”);

b.Property<DateTime?>(“PeriodoFinalParaMatricula”);

b.Property<DateTime?>(“PeriodoInicialParaMatricula”);

b.Property<decimal>(“Preco”);

b.Property<int>(“Tipo”);

b.HasKey(“Id”);

b.HasIndex(“CursoId”);

b.ToTable(“CursoAberto”);

});

Reparem que agora eu não tenho mais a coluna com o nome “DataDoCurso” e sim “InicioDoCurso”.

Ok, feito isso, agora você já pode aplicar o seu migration.

Bom, espero ter ajudado e até a próxima.

Você gostou desse artigo? Gostaria de saber mais sobre ASP.NET Core? Eu desenvolvi um curso na Udemy, preço camarada e com mais de 13h de curso. Acesse https://www.udemy.com/aspnet-core-aprendendo-do-zero-ao-avancado/

 

Published in.Net Core

Be First to Comment

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *