如何使用Entity Framework Code First创建新列并将数据移动到该列

时间:2014-04-16 14:27:09

标签: entity-framework

class Person
{
    public int Id { get; set; }
    //omitted for brevity
    public bool IsActive { get; set; }
}
class Person
{
    public int Id { get; set; }
    //omitted for brevity
    public int Status { get; set; }
}

enum Status
{
    Active,
    Inactive,
    NoState,
}

Person是一个包含数据的数据库表。由于新的要求,我想删除IsActive并拥有状态枚举。我还想将数据从IsActive列移动到Status列而不会丢失它。我使用的是EF Code First。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题。我遵循的步骤如下:

  1. 通过包管理器控制台支持Add-Migration AlterStatusEnum。
  2. 在生成的分部类的Up方法中,更改 AddColumn(“dbo.Person”,“状态”,c => c.Int(可空:false)); RenameColumn(“dbo.Person”,“IsActive”,“状态”);
  3. 添加alter语句 AlterColumn(“dbo.Person”,“状态”,c => c.Int(可空:false)); 这完成了工作。
  4. 示例代码

    public partial class AlterStatusEnum : DbMigration
    {
        public override void Up()
        {
            RenameColumn("dbo.Person", "IsActive", "Status");
            AlterColumn("dbo.Person", "Status", c => c.Int(nullable: false));
        }
    
        public override void Down()
        {
            // Removed for brevity
        }
    }
    

    简而言之,我所做的就是重命名现有列并更改其数据类型。