修改实体框架迁移是否安全,以便不是丢弃并重新创建索引,而是以不同的方式实现?

时间:2015-11-19 19:13:06

标签: entity-framework azure ef-migrations clustered-index

Azure不支持“堆”表,因此我无法“删除”主索引。

EntityFramework 会生成需要删除然后重新创建索引的迁移。在运行迁移之前是否安全,修改它以便不是删除并重新创建索引,而是使用新索引将数据复制到新表,删除旧表,然后将新表重命名为旧表的名称?

最终数据库的最终状态将是相同的,所以我认为这是一个安全的改变。

模型快照等应该都是相同的。

1 个答案:

答案 0 :(得分:0)

我们会定期修改迁移以创建其他索引或创建视图而不是表格。

public override void Up() {
    Sql(@"CREATE VIEW ... ");
}

public override void Down() {
    Sql(@"DROP VIEW ... ");
}

只要数据库的最终状态与您的模型兼容,它就是安全的。您应该只关注迁移的“向下”部分。如果您有可能运行它,则不仅应修改Up方法,还应修改迁移中的Down方法。