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");
我在尝试删除对 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");