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 改变后(我失去了我的名字字段数据).
使用以下内容时没有问题:
首先,设置迁移:
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)
瞧,它被重命名,数据被保留.
| 归档时间: |
|
| 查看次数: |
1734 次 |
| 最近记录: |