通过 EntityFramework CodeFirst 迁移删除索引

Remove index thru EntityFramework CodeFirst Migration

我们现在使用 EntityFramework CodeFirst 迁移。 我们的数据库 table 和索引是很久以前创建的,在我们使用 EntityFramework CodeFirst 迁移之前。 我们的 table 是 myTable,具有列 vchMyColumnA 和索引 ColumnA。 由于我们使用了 EntityFramework CodeFirst Migration,因此我们使用了 EntityFramework CodeFirst Migration 将新列添加到 myTable。

我们需要删除索引 ColumnA。

  1. 我们是否需要通过 EntityFramework CodeFirst 迁移来完成,或者我们是否可以 运行 一个脚本来删除索引?

  2. 如果我们需要通过 EntityFramework CodeFirst 迁移删除索引,我该怎么做?在程序包管理器控制台中,我输入 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");
        }
    }
    

然后我输入了更新数据库。 没有错误,我可以在数据库中看到迁移(select * 来自__MigrationHistor),但索引 ColumnA 仍然存在。

谢谢。

抱歉,很难在评论中写这个。您可以将等效的 SQL 注入迁移:

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