修改实体框架迁移是否安全,以便不用删除和重新创建索引,而是以不同的方式进行修改?

问题描述:

Azure不支持“堆”表,因此我无法“删除”主索引。修改实体框架迁移是否安全,以便不用删除和重新创建索引,而是以不同的方式进行修改?

EntityFramework生成一个需要删除然后重新创建索引的迁移。在运行迁移之前安全地对其进行修改是为了不删除并重新创建索引,而是将数据复制到具有新索引的新表中,删除旧表,然后将新表重命名为旧表的名称?

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

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

+0

我觉得你要创建你自己的'IDatabaseInitializer ' – CodeNotFound

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

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

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

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