MVC - Ошибка ALTER TABLE DROP COLUMN, так как один или несколько объектов имеют доступ к этому столбцу - PullRequest
0 голосов
/ 20 марта 2019

Я получаю следующее сообщение об ошибке из консоли диспетчера пакетов при попытке удалить ссылку на класс:

Объект '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, потому что один или несколько объектов обращаются к этому столбцу ", но я не могу его применить.

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Я смотрел на DropForeignKey ().Есть еще одна версия, которая позволяет указать имя внешнего ключа.Вы можете добавить это в свою миграцию. Документ Microsoft на DropForeignKey

DropForeignKey("dbo.Resultaters", "FK_dbo.Resultats_dbo.Ovelses_OvelseId");
0 голосов
/ 20 марта 2019

Попробуйте это в SQL Server Management Studio, а затем выполните миграцию.

use [Name Of Your Database];

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