How do I migrate Code First without deleting data from the table attribute?

Asked

Viewed 147 times

2

I need to change the attribute name of Heaviness for Pesoproduct, this is the code that is generated after executing the command add-Migration:

namespace Web.Dominio.Migrations
{
    using System;
    using System.Data.Entity.Migrations;

    public partial class alterar_Peso_para_PesoProduto_em_Produto : DbMigration
    {
        public override void Up()
        {
            AddColumn("dbo.Produto", "PesoProduto", c => c.Decimal(precision: 18, scale: 2));
            DropColumn("dbo.Produto", "Peso");
        }

        public override void Down()
        {
            AddColumn("dbo.Produto", "Peso", c => c.Decimal(precision: 18, scale: 2));
            DropColumn("dbo.Produto", "PesoProduto");
        }
    }
}

the problem is that the column data is deleted and I don’t want to delete the data I only want to change the name of the table attribute.

2 answers

3


You will need to manually edit the generated Migration by replacing Add and Drop for Rename:

public override void Up()
{
    //AddColumn("dbo.Produto", "PesoProduto", c => c.Decimal(precision: 18, scale: 2));
    //DropColumn("dbo.Produto", "Peso");

    // Vira
    RenameColumn("dbo.[Produtos]", "Peso", "PesoProduto");
}

public override void Down()
{
    //AddColumn("dbo.Produto", "Peso", c => c.Decimal(precision: 18, scale: 2));
    //DropColumn("dbo.Produto", "PesoProduto");

    RenameColumn("dbo.[Produtos]", "PesoProduto", "Peso");
}

2

In the method Up and Down, clear the code and put RenameColumn, with sequential parameters in the method Up:

  • Nome da tabela
  • Nome atual do campo da tabela
  • Novo nome para o campo da tabela

In the example below for your problem:

public partial class alter_coluna_peso_pesoproduto : DbMigration
{
    public override void Up()
    {           
        RenameColumn("dbo.Produto", "Peso", "PesoProduto");
    }

    public override void Down()
    {

    }
}

References:

Browser other questions tagged

You are not signed in. Login or sign up in order to post.