Tôi đã đổi tên một vài thực thể và các thuộc tính điều hướng của chúng và tạo một Di chuyển mới trong EF 5. Như thường lệ với việc đổi tên trong di chuyển EF, theo mặc định, nó sẽ bỏ các đối tượng và tạo lại chúng. Đó không phải là điều tôi muốn vì vậy tôi đã phải xây dựng tệp di chuyển từ đầu.
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");
}
Tất cả những gì tôi đang cố gắng làm là đổi tên dbo.ReportSections
thành dbo.ReportPages
và sau đó dbo.ReportSectionGroups
thành dbo.ReportSections
. Sau đó, tôi cần phải đổi tên cột khoá ngoại trên dbo.ReportPages
từ Group_Id
để Section_Id
.
Tôi đang bỏ các khóa và chỉ mục ngoại liên kết các bảng lại với nhau, sau đó tôi đổi tên các bảng và cột khóa ngoại, sau đó tôi lại thêm các chỉ mục và khóa ngoại. Tôi giả sử điều này sẽ hoạt động nhưng tôi gặp lỗi SQL.
Msg 15248, Cấp 11, Trạng thái 1, Quy trình sp_rename, Dòng 215 Hoặc tham số @objname không rõ ràng hoặc @objtype (COLUMN) được tuyên bố là sai. Msg 4902, Cấp 16, Trạng thái 1, Dòng 10 Không thể tìm thấy đối tượng "dbo.ReportSections" vì nó không tồn tại hoặc bạn không có quyền.
Tôi không có một thời gian dễ dàng để tìm ra những gì sai ở đây. Bất kỳ cái nhìn sâu sắc sẽ rất hữu ích.