找不到对象"dbo.course",因为它不存在或您没有权限



我正在开发一个ASP。NET MVC5 Web应用程序。我使用实体框架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; }
}

第二张表的名称是paymentOptions,这是它的模型。

public class PaymentOptions
{
    [Key]
    public int PaymentOptionsID { get; set; }
    public int courseID { get; set; }
    [DisplayName("Payment Options")]
    public string paymentOption {get; set; }
}

我添加了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; }
}

当我添加迁移时,它工作得很好,但当我点击更新数据库命令时,我突然得到了这个错误

找不到对象"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");
    }
}

我已经阅读了关于stackoverflow的所有问题,http://forums.asp.net,msdn.microsoft.com›SQL Server和我似乎仍然不明白为什么会发生这种情况,以及我需要做些什么来解决它。

任何帮助都将不胜感激。提前感谢

我在您的语句序列中看到了问题。重命名对象后,您正试图引用该对象。

 RenameTable(name: "dbo.course", newName: "PaymentOptionscourse");
    DropForeignKey("dbo.course", "PaymentOptions_PaymentOptionsID", "dbo.PaymentOptions");
    DropIndex("dbo.course", new[] { "PaymentOptions_PaymentOptionsID" });

相反,试试这个

 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");

相关内容

最新更新