首页 文章

通过EntityFramework CodeFirst Migration删除索引

提问于
浏览
1

我们现在使用EntityFramework CodeFirst Migration . 在我们使用EntityFramework CodeFirst Migration之前,我们的数据库表和索引是很久以前创建的 . 我们的表是myTable,列为vchMyColumnA和索引ColumnA . 由于我们使用了EntityFramework CodeFirst Migration,因此我们使用EntityFramework CodeFirst Migration向myTable添加新列 .

我们需要删除Index ColumnA .

  • 我们是否需要通过EntityFramework CodeFirst Migration来实现,或者我们可以运行脚本来删除索引吗?

  • 如果我们需要通过EntityFramework CodeFirst Migration删除索引,我该怎么办?在Package Manager Console中,我键入了add-migration DropColumnAIndex,并打开了迁移代码DropColumnAIndex,并添加了以下代码:

public partial class DropColumnAIndex : DbMigration
{

    public override void Up()
    {
        DropIndex("dbo.myTable", new[] { "ColumnA" });
    }

    public override void Down()
    {
        CreateIndex("dbo.myTable", "vchMyColumnA");
    }
}

然后我输入了update-database . 没有错误,我可以看到数据库中的迁移(从__MigrationHistor中选择*),但索引ColumnA仍然存在 .

谢谢 .

1 回答

  • 1

    对不起,很难在评论中写这个 . 您可以在迁移中注入等效的SQL:

    public override void Up()
    {
        Sql("DROP INDEX ColumnA ON [dbo].[myTable];"); 
    }
    

相关问题