我们现在使用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仍在那里。
谢谢。
答案 0 :(得分:1)
很抱歉,很难在评论中写这个。您可以在迁移中注入等效的SQL:
public override void Up()
{
Sql("DROP INDEX ColumnA ON [dbo].[myTable];");
}