Tha*_*ote 2 c# sql-server ef-migrations entity-framework-6 asp.net-mvc-5
我正在开发一个ASP.NET MVC5 Web应用程序.我正在使用Entity Framework 6来满足我的数据存储需求.我正在使用它的代码第一个功能,启用了迁移.自动迁移设置为false.
我有两张桌子,我正试图改变.第一个表叫做课程,这是它的模型.
public class course
{
[Key]
public int courseID { get; set; }
public int categoryID { get; set; }
public int PaymentOptionsID { get; set; }
[Required]
[DisplayName("Course Code")]
public string courseCode { get; set; }
[Required]
[DisplayName("Course Name")]
public string courseName { get; set; }
[Required]
[DataType(DataType.Currency)]
public decimal price { get; set; }
[DataType(DataType.MultilineText)]
[DisplayName("Course Description")]
[StringLength(255, ErrorMessage = "Only a maximum of 255 characters are allowed")]
public string courseDescription { get; set; }
[Required]
[DisplayName("Study Material")]
public string courseIncludes { get; set; }
public string courseInfoUrl { get; set; }
public virtual ICollection<enrollment> enrollment { get; set; }
public virtual courseCategory courseCategory { get; set; }
public virtual PaymentOptions PaymentOptions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
第二个表的名称是paymentOptions,这是它的模型.
public class PaymentOptions
{
[Key]
public int PaymentOptionsID { get; set; }
public int courseID { get; set; }
[DisplayName("Payment Options")]
public string paymentOption {get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我已经添加了5次迁移,但它们运行良好.现在我正在尝试添加第六个,我试图对表进行以下更改
public class course
{
[Key]
public int courseID { get; set; }
public int categoryID { get; set; }
public int PaymentOptionsID { get; set; }
[Required]
[DisplayName("Course Code")]
public string courseCode { get; set; }
[Required]
[DisplayName("Course Name")]
public string courseName { get; set; }
[Required]
[DataType(DataType.Currency)]
public decimal price { get; set; }
[Required]
[DisplayName("Course Includes")]
public string courseIncludes { get; set; }
public string courseInfoUrl { get; set; }
public virtual ICollection<enrollment> enrollment { get; set; }
public virtual courseCategory courseCategory { get; set; }
public virtual ICollection<PaymentOptions> PaymentOptions { get; set; }
}
public class PaymentOptions
{
[Key]
public int PaymentOptionsID { get; set; }
public int courseID { get; set; }
[DisplayName("Payment Options")]
public string paymentOption {get; set; }
public virtual ICollection<course> course { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我添加Migration它工作正常但是一旦我点击update-database命令突然间我得到了这个错误
"找不到对象"dbo.course",因为它不存在或者你没有权限."
这就是迁移的样子.
public partial class AddPaymentOptionsagain : DbMigration
{
public override void Up()
{
RenameTable(name: "dbo.course", newName: "PaymentOptionscourse");
DropForeignKey("dbo.course", "PaymentOptions_PaymentOptionsID", "dbo.PaymentOptions");
DropIndex("dbo.course", new[] { "PaymentOptions_PaymentOptionsID" });
AddColumn("dbo.course", "PaymentOptionsID", c => c.Int(nullable: false));
CreateIndex("dbo.PaymentOptionscourse", "PaymentOptions_PaymentOptionsID");
CreateIndex("dbo.PaymentOptionscourse", "course_courseID");
AddForeignKey("dbo.PaymentOptionscourse", "PaymentOptions_PaymentOptionsID", "dbo.PaymentOptions", "PaymentOptionsID", cascadeDelete: true);
AddForeignKey("dbo.PaymentOptionscourse", "course_courseID", "dbo.course", "courseID", cascadeDelete: true);
DropColumn("dbo.course", "courseDescription");
DropColumn("dbo.course", "PaymentOptions_PaymentOptionsID");
}
public override void Down()
{
AddColumn("dbo.course", "PaymentOptions_PaymentOptionsID", c => c.Int());
AddColumn("dbo.course", "courseDescription", c => c.String(maxLength: 255));
DropForeignKey("dbo.PaymentOptionscourse", "course_courseID", "dbo.course");
DropForeignKey("dbo.PaymentOptionscourse", "PaymentOptions_PaymentOptionsID", "dbo.PaymentOptions");
DropIndex("dbo.PaymentOptionscourse", new[] { "course_courseID" });
DropIndex("dbo.PaymentOptionscourse", new[] { "PaymentOptions_PaymentOptionsID" });
DropColumn("dbo.course", "PaymentOptionsID");
CreateIndex("dbo.course", "PaymentOptions_PaymentOptionsID");
AddForeignKey("dbo.course", "PaymentOptions_PaymentOptionsID", "dbo.PaymentOptions", "PaymentOptionsID");
RenameTable(name: "dbo.PaymentOptionscourse", newName: "course");
}
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了有关stackoverflow,http://forums.asp.net,msdn.microsoft.com> SQL Server的所有问题,我仍然无法弄清楚为什么会发生这种情况以及我需要做些什么来修复它.
任何帮助将非常感激.提前致谢
小智 7
我在你的陈述序列中看到了问题.您正在尝试在重命名后引用该对象.
RenameTable(name: "dbo.course", newName: "PaymentOptionscourse");
DropForeignKey("dbo.course", "PaymentOptions_PaymentOptionsID", "dbo.PaymentOptions");
DropIndex("dbo.course", new[] { "PaymentOptions_PaymentOptionsID" });
Run Code Online (Sandbox Code Playgroud)
而是试试这个
RenameTable(name: "dbo.course", newName: "PaymentOptionscourse");
DropForeignKey("dbo.PaymentOptionscourse", "PaymentOptions_PaymentOptionsID", "dbo.PaymentOptions");
DropIndex("dbo.PaymentOptionscourse", new[] { "PaymentOptions_PaymentOptionsID" });
AddColumn("dbo.PaymentOptionscourse", "PaymentOptionsID", c => c.Int(nullable: false));
CreateIndex("dbo.PaymentOptionscourse", "PaymentOptions_PaymentOptionsID");
CreateIndex("dbo.PaymentOptionscourse", "course_courseID");
AddForeignKey("dbo.PaymentOptionscourse", "PaymentOptions_PaymentOptionsID", "dbo.PaymentOptions", "PaymentOptionsID", cascadeDelete: true);
AddForeignKey("dbo.PaymentOptionscourse", "course_courseID", "dbo.PaymentOptionscourse", "courseID", cascadeDelete: true);
DropColumn("dbo.PaymentOptionscourse", "courseDescription");
DropColumn("dbo.PaymentOptionscourse", "PaymentOptions_PaymentOptionsID");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4676 次 |
| 最近记录: |