Как применить миграцию Entity Framework с внешними ключами к таблице с данными

Мне нужно применить миграцию, которую один из моих коллег добавил вчера в мою локальную БД:

public partial class addDocumentFK : DbMigration
{
    public override void Up()
    {
        CreateIndex("dbo.DocumentHierarchy", "DocumentId");
        AddForeignKey("dbo.DocumentHierarchy", "DocumentId", "dbo.Document", "Id");
    }
    
    public override void Down()
    {
        DropForeignKey("dbo.DocumentHierarchy", "DocumentId", "dbo.Document");
        DropIndex("dbo.DocumentHierarchy", new[] { "DocumentId" });
    }
}

Проблема в том, что у меня уже есть данные в моей таблице Document, и миграция не удалась:

The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_dbo.DocumentHierarchy_dbo.Document_DocumentId". The conflict occurred in database "dgc_db", table "dbo.Document", column 'Id'.

Есть ли способ избежать этого конфликта, не стирая все данные из таблицы Document?


person amedina    schedule 15.09.2020    source источник
comment
Это та же проблема, что и этот пост? stackoverflow.com/questions/21839309/ Для меня это звучит так, как будто вы должны удалить строки, вызывающие проблемы, которых нет в другой таблице.   -  person Gobelet    schedule 15.09.2020


Ответы (1)


Тут может быть 2 сценария:

  1. Вы можете удалить данные из таблицы документов, связь которых не может быть найдена в таблице иерархии документов.
  2. Вы можете добавить данные с правильными первичными ключами в таблицу иерархии документов, чтобы связь была правильной.

После выполнения любого из вышеперечисленных случаев вы сможете добавить внешний ключ с помощью миграции.

person Sagar Vaja    schedule 15.09.2020