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

时间:2016-01-25 05:39:45

标签: sql asp.net-mvc entity-framework

我错误地在我的数据库中添加了一个列,现在命名为doj如果我想使用代码首先从表中删除该列,我应该怎样做。

我试过这件事。

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

但它还没有在数据库中反映出来吗?我犯了错误的地方?

5 个答案:

答案 0 :(得分: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()
    {
    }
  }
}

答案 1 :(得分:4)

不需要删除迁移历史记录。

请按以下步骤操作

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' 

它会严重影响您的代码。使用MSDN

答案 2 :(得分:1)

你应该这样做 1-)从模型中删除列定义。 2-)构建您的项目 3-)添加迁移 4-)更新的数据库

您不应删除迁移历史记录。 当你删除列时要好心,因为你可能会丢失表中数据的数据。

答案 3 :(得分:0)

实际上我不必担心我遇到的问题就是你需要做的事情。

1:从您为创建该列添加的类中删除该属性 2:在Visual Studio中打开包管理器控制台。
3:您已经启用了迁移,因此无需再次运行,但出于某种原因,如果您要获取启用迁移的消息,请运行启用 - 迁移
4:运行 update-database -TargetMigration:“Migration”

其中第4点的迁移是您为添加列而添加的迁移的名称。

希望它会对你有所帮助。

答案 4 :(得分:0)

在 Asp.net core 中应用迁移(更新数据库)后删除列非常简单。请按照以下步骤操作:

  1. 打开您的模型文件夹并删除与您要删除的列等效的特定属性
  2. 打开您的包管理器控制台并运行“Add-Migration anyMigrationName”
  3. 运行更新数据库

刷新您的数据库,您将看到更改。