Я перейменував пару об'єктів та їх навігаційні властивості та створив нову міграцію в EF 5. Як зазвичай це стосується перейменувань під час переміщення EF, за замовчуванням він збирався скидати об'єкти та відтворювати їх. Це не те, чого я хотів, тому мені дуже довелося будувати файл міграції з нуля.
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");
}
Все , що я намагаюся зробити , це перейменувати dbo.ReportSections
в , dbo.ReportPages
а потім dbo.ReportSectionGroups
в dbo.ReportSections
. Тоді мені потрібно перейменувати стовпець із зовнішнім ключем на dbo.ReportPages
від Group_Id
до до Section_Id
.
Я скидаю зовнішні ключі та індекси, що пов'язують таблиці разом, потім я перейменую таблиці та стовпець із зовнішнім ключем, потім знову додаю індекси та зовнішні ключі. Я припускав, що це буде працювати, але я отримую помилку SQL.
Msg 15248, рівень 11, стан 1, процедура sp_rename, рядок 215 Або параметр @objname неоднозначний, або заявлений @objtype (COLUMN) невірний. Msg 4902, рівень 16, стан 1, рядок 10 Неможливо знайти об’єкт "dbo.ReportSections", оскільки він не існує або у вас немає дозволів.
Мені непросто зрозуміти, що тут не так. Будь-яке розуміння було б надзвичайно корисним.