MVC3中的数据迁移(使用EF.4.3) [英] Data Migration In MVC3 (Using EF.4.3)

查看:99
本文介绍了MVC3中的数据迁移(使用EF.4.3)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  ID名称颜色

1 Java red

2 MVC蓝色

3 .Net蓝色

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

  ID名称BookColor 

1 Java null

2 MVC null

3 .Net null

I失去了我的字段值。我如何确保所有的值被转移?



我正在使用具有MVC3的实体框架



EDIT 这是我的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);
}
}

我已经更改了 / code>到名称更改后(我在名称字段中丢失了我的数据)。

解决方案

我没有使用以下问题:



首先,设置迁移:

  PM>启用迁移
PM>添加迁移RenameBookColorColumn

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

  public class RenameBookColorColumn:DbMigration 
{
public override void Up()
{
this.RenameColumn (图书,颜色,书籍颜色);
}
public override void Down()
{
this.RenameColumn(Books,BookColor,Color);
}
}

接下来,拨打更新数据库,以便我们可以执行更改:

  PM>更新数据库-Verbose 
使用NuGet项目示例。
使用StartUp项目'ExampleTest'。
目标数据库是:'ExampleContext'(DataSource:.\SQLEXPRESS,Provider:System.Data.SqlClient,Origin:Convention)。
应用显式迁移:[201207051400010_RenameBookColorColumn]。
应用显式迁移:201207051400010_RenameBookColorColumn。
EXECUTE sp_rename @objname = N'Books.Color',@newname = N'BookColor',
@objtype = N'COLUMN'[插入迁移历史记录]

而且,它被重命名,数据保留。


I am doing data-migration for my project. But I have one question, for example: I have Book table with following fields:

ID  Name   Color

1   Java    red

2   MVC     blue

3   .Net    blue

I tried to change the name of field from "Color" to "BookColor" using Code First tech. But after migration the table looked like this:

ID  Name   BookColor

1   Java    null

2   MVC     null

3   .Net    null

I lost my field values. How can I make sure that all value are transfered?

I'm using Entity Framework with MVC3

EDIT This is my DBMigration Class:

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");
    }
}

I have changed Name to Names after changing (I lost my data in name field).

解决方案

I had no problems using the following:

First, setup the migrations:

PM> Enable-Migrations
PM> Add-Migration RenameBookColorColumn

Then we setup the migrations class to perform the rename:

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

Next, make a call to Update-Database so we can perform the changes:

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]

And voila, it's renamed and the data is retained.

这篇关于MVC3中的数据迁移(使用EF.4.3)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆