MVC - ALTER TABLE DROP COLUMN 失败,因为一个或多个对象访问此列

MVC - ALTER TABLE DROP COLUMN failed because one or more objects access this column

我在尝试删除对 class 的引用时从程序包管理器控制台收到以下错误消息:

The object 'FK_dbo.Resultats_dbo.Ovelses_OvelseId' is dependent on column 'OvelseId'. ALTER TABLE DROP COLUMN OvelseId failed because one or more objects access this column.

我在对我的模型进行以下更改时遇到了这个问题

    public class Resultater
{
    public int Id { get; set; }

    [Required]
    public string AspNetUsersId { get; set; } //foreign key for users

    //public Ovelser Ovelse { get; set; }

    //[Required]
    //public int OvelseId { get; set; }

    [Required]
    [Display(Name = "Dato")]
    public DateTime Date { get; set; }

    [Required]
    public string Form { get; set; }

}

public class Ovelser
{
    public int Id { get; set; }

    [Required]
    [Display(Name = "Øvelse")]
    public OvelseType OvelseType { get; set; }

    [Required]
    public short OvelseTypeId { get; set; }

    [Required]
    public decimal Resultat { get; set; }

    [Required]
    [Display(Name = "Hvordan var utførelsen")]
    public string Beskrivelse { get; set; }

}

当我开始迁移时,包管理器控制台为我提供了以下代码:

    public override void Up()
    {
        DropForeignKey("dbo.Resultaters", "OvelseId", "dbo.Ovelsers");
        DropIndex("dbo.Resultaters", new[] { "OvelseId" });
        DropColumn("dbo.Resultaters", "OvelseId");
    }

    public override void Down()
    {
        AddColumn("dbo.Resultaters", "OvelseId", c => c.Int(nullable: false));
        CreateIndex("dbo.Resultaters", "OvelseId");
        AddForeignKey("dbo.Resultaters", "OvelseId", "dbo.Ovelsers", "Id", cascadeDelete: true);
    }

我发现了一个非常相似的问题“”,但我无法应用它。

在 SQL Server Management Studio 中尝试此操作,然后进行迁移。

use [Name Of Your Database];

alter table Resultater drop constraint [FK_dbo.Resultats_dbo.Ovelses_OvelseId];

我正在查看 DropForeignKey()。还有另一个版本允许您指定外键的名称。您也许可以将其添加到您的迁移中。 Microsoft document on DropForeignKey

DropForeignKey("dbo.Resultaters", "FK_dbo.Resultats_dbo.Ovelses_OvelseId");