Eu renomei duas entidades e suas propriedades de navegação e gerei uma nova Migração no EF 5. Como é usual com renomeações em migrações EF, por padrão ele iria descartar objetos e recriá-los. Não era isso que eu queria, então tive que criar o arquivo de migração do zero.
public override void Up()
{
DropForeignKey("dbo.ReportSectionGroups", "Report_Id", "dbo.Reports");
DropForeignKey("dbo.ReportSections", "Group_Id", "dbo.ReportSectionGroups");
DropForeignKey("dbo.Editables", "Section_Id", "dbo.ReportSections");
DropIndex("dbo.ReportSectionGroups", new[] { "Report_Id" });
DropIndex("dbo.ReportSections", new[] { "Group_Id" });
DropIndex("dbo.Editables", new[] { "Section_Id" });
RenameTable("dbo.ReportSections", "dbo.ReportPages");
RenameTable("dbo.ReportSectionGroups", "dbo.ReportSections");
RenameColumn("dbo.ReportPages", "Group_Id", "Section_Id");
AddForeignKey("dbo.ReportSections", "Report_Id", "dbo.Reports", "Id");
AddForeignKey("dbo.ReportPages", "Section_Id", "dbo.ReportSections", "Id");
AddForeignKey("dbo.Editables", "Page_Id", "dbo.ReportPages", "Id");
CreateIndex("dbo.ReportSections", "Report_Id");
CreateIndex("dbo.ReportPages", "Section_Id");
CreateIndex("dbo.Editables", "Page_Id");
}
public override void Down()
{
DropIndex("dbo.Editables", "Page_Id");
DropIndex("dbo.ReportPages", "Section_Id");
DropIndex("dbo.ReportSections", "Report_Id");
DropForeignKey("dbo.Editables", "Page_Id", "dbo.ReportPages");
DropForeignKey("dbo.ReportPages", "Section_Id", "dbo.ReportSections");
DropForeignKey("dbo.ReportSections", "Report_Id", "dbo.Reports");
RenameColumn("dbo.ReportPages", "Section_Id", "Group_Id");
RenameTable("dbo.ReportSections", "dbo.ReportSectionGroups");
RenameTable("dbo.ReportPages", "dbo.ReportSections");
CreateIndex("dbo.Editables", "Section_Id");
CreateIndex("dbo.ReportSections", "Group_Id");
CreateIndex("dbo.ReportSectionGroups", "Report_Id");
AddForeignKey("dbo.Editables", "Section_Id", "dbo.ReportSections", "Id");
AddForeignKey("dbo.ReportSections", "Group_Id", "dbo.ReportSectionGroups", "Id");
AddForeignKey("dbo.ReportSectionGroups", "Report_Id", "dbo.Reports", "Id");
}
Tudo o que estou tentando fazer é renomear dbo.ReportSections
para dbo.ReportPages
e depois dbo.ReportSectionGroups
para dbo.ReportSections
. Em seguida, preciso renomear a coluna de chave estrangeira dbo.ReportPages
de Group_Id
para Section_Id
.
Estou eliminando as chaves estrangeiras e os índices que vinculam as tabelas, depois renomeio as tabelas e a coluna da chave estrangeira e, em seguida, estou adicionando os índices e as chaves estrangeiras novamente. Achei que isso iria funcionar, mas estou recebendo um erro de SQL.
Msg 15248, nível 11, estado 1, procedimento sp_rename, linha 215 O parâmetro @objname é ambíguo ou o @objtype reivindicado (COLUMN) está incorreto. Msg 4902, Nível 16, Estado 1, Linha 10 Não é possível localizar o objeto "dbo.ReportSections" porque ele não existe ou você não tem permissões.
Não estou tendo um tempo fácil para descobrir o que está errado aqui. Qualquer insight seria extremamente útil.