通过 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。
我们是否需要通过 EntityFramework CodeFirst 迁移来完成,或者我们是否可以 运行 一个脚本来删除索引?
如果我们需要通过 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];");
}
我们现在使用 EntityFramework CodeFirst 迁移。 我们的数据库 table 和索引是很久以前创建的,在我们使用 EntityFramework CodeFirst 迁移之前。 我们的 table 是 myTable,具有列 vchMyColumnA 和索引 ColumnA。 由于我们使用了 EntityFramework CodeFirst Migration,因此我们使用了 EntityFramework CodeFirst Migration 将新列添加到 myTable。
我们需要删除索引 ColumnA。
我们是否需要通过 EntityFramework CodeFirst 迁移来完成,或者我们是否可以 运行 一个脚本来删除索引?
如果我们需要通过 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];");
}