如何使用EF 6.0中的代码优先方法从sql表中删除列?

Anu*_*rma 4 sql asp.net-mvc entity-framework

错误地,我在数据库“ Named”中添加了一个列,doj如果我现在想使用代码优先方法从表中删除该列,该怎么办。

我已经尝试过了

1-从模型中删除列定义。
2-删除迁移历史记录。
3-添加迁移
4-更新数据库。

但是仍然没有反映在数据库中吗?我在哪里弄错了?

Nee*_*rma 7

无需删除迁移历史记录。

只需按照以下步骤

1: Remove properties from the model.
2: Run 'Enable-Migrations' in package manage console.
3: Next Run 'Add-Migration "MigrationsName"'. if any case it is showing 'The project  tesproject failed to build then build project again.
4: Now run 'Update-Database' 
Run Code Online (Sandbox Code Playgroud)

这将对您的代码产生影响。使用MSDN


meg*_*iku 5

尽管Neeraj的答案是正确的,并且在大多数情况下运行良好,但是如果该列中包含以前的数据,它将从索引中删除,但是数据仍将存在(并且就此而言,该列)。

若要完全删除列(及其中的数据),请使用DropColumn()方法。为此,请创建一个新的迁移,add-migration unwantedColumnCleanup并在up()方法中包括必要的代码,然后单击update-database

namespace MyDB.Migrations
{
  using System;
  using System.Data.Entity.Migrations;

  public partial class unwantedColumnCleanup : DbMigration
  {
    public override void Up()
    {
        DropColumn("Table", "Column");
    }

    public override void Down()
    {
    }
  }
}
Run Code Online (Sandbox Code Playgroud)