MVC3中的数据迁移(使用EF.4.3)

Kap*_*ija 2 ef-code-first ef-migrations entity-framework-4.3

我正在为我的项目进行数据迁移.但我有一个问题,例如:我有以下字段的Book表:

ID  Name   Color

1   Java    red

2   MVC     blue

3   .Net    blue
Run Code Online (Sandbox Code Playgroud)

我尝试使用Code First技术将字段名称从"Color"更改为"BookColor".但迁移后,表格如下所示:

ID  Name   BookColor

1   Java    null

2   MVC     null

3   .Net    null
Run Code Online (Sandbox Code Playgroud)

我丢失了我的场地值.如何确保所有价值都被转移?

我正在使用Entity Framework和MVC3

编辑这是我的DBMigration类:

public partial class AddCreative : DbMigration
{

    public override void Up()
    {
        AddColumn("Authors", "Names", c => c.String(maxLength: 4000));
        DropColumn("Authors", "Name");
    }


    public override void Down()
    {
        AddColumn("Authors", "Name", c => c.String(maxLength: 4000));
        DropColumn("Authors", "Names");
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经改变Name,以Names 改变后(我失去了我的名字字段数据).

Bra*_*tie 6

使用以下内容时没有问题:

首先,设置迁移:

PM> Enable-Migrations
PM> Add-Migration RenameBookColorColumn
Run Code Online (Sandbox Code Playgroud)

然后我们设置迁移类来执行重命名:

public class RenameBookColorColumn : DbMigration
{
    public override void Up()
    {
        this.RenameColumn("Books", "Color", "BookColor");
    }
    public override void Down()
    {
        this.RenameColumn("Books", "BookColor", "Color");
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来,拨打电话,Update-Database以便我们执行更改:

PM> Update-Database -Verbose
Using NuGet project 'Example'.
Using StartUp project 'ExampleTest'.
Target database is: 'ExampleContext' (DataSource: .\SQLEXPRESS, Provider: System.Data.SqlClient, Origin: Convention).
Applying explicit migrations: [201207051400010_RenameBookColorColumn].
Applying explicit migration: 201207051400010_RenameBookColorColumn.
EXECUTE sp_rename @objname = N'Books.Color', @newname = N'BookColor',
@objtype = N'COLUMN' [Inserting migration history record]
Run Code Online (Sandbox Code Playgroud)

瞧,它被重命名,数据被保留.