Ho rinominato un paio di entità e le loro proprietà di navigazione e ho generato una nuova migrazione in EF 5. Come al solito con le ridenominazioni nelle migrazioni EF, per impostazione predefinita stava per rilasciare oggetti e ricrearli. Non è quello che volevo, quindi ho praticamente dovuto creare il file di migrazione da 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");
}
Tutto quello che sto cercando di fare è rinominare dbo.ReportSections
in dbo.ReportPages
e poi dbo.ReportSectionGroups
in dbo.ReportSections
. Quindi ho bisogno di rinominare la colonna della chiave esterna dbo.ReportPages
da Group_Id
a Section_Id
.
Sto rilasciando le chiavi esterne e gli indici che collegano le tabelle insieme, quindi sto rinominando le tabelle e la colonna della chiave esterna, quindi aggiungo di nuovo gli indici e le chiavi esterne. Pensavo che avrebbe funzionato ma ricevo un errore SQL.
Msg 15248, livello 11, stato 1, procedura sp_rename, riga 215 Il parametro @objname è ambiguo oppure @objtype (COLUMN) dichiarato è errato. Msg 4902, livello 16, stato 1, riga 10 Impossibile trovare l'oggetto "dbo.ReportSections" perché non esiste o non si dispone delle autorizzazioni.
Non riesco a capire cosa c'è che non va qui. Qualsiasi intuizione sarebbe estremamente utile.