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

问题描述 投票:0回答:2

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

对象'FK_dbo.Resultats_dbo.Ovelses_OvelseId'依赖于列'OvelseId'。 ALTER TABLE DROP COLUMN OvelseId失败,因为一个或多个对象访问此列。

我对模型进行以下更改时遇到此问题

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

我发现了一个非常类似的问题“ALTER TABLE DROP COLUMN failed because one or more objects access this column”,但我无法应用它。

c# sql-server entity-framework code-first
2个回答
1
投票

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

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

0
投票

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

use [Name Of Your Database];

alter table Resultater drop constraint [FK_dbo.Resultats_dbo.Ovelses_OvelseId];
© www.soinside.com 2019 - 2024. All rights reserved.