Откат к предыдущим миграциям не работает при наличии кода Seed - PullRequest
0 голосов
/ 28 января 2019

Мы используем Code First Migration, иногда полезно откатиться к предыдущим миграциям.

Что-то вроде Update-Database -TargetMigration:name_of_migration выполняет работу большую часть времени.

Но это не работает, если некоторые миграции содержат Seed код.

Ошибка:

The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.__HistorySeeds_dbo.__MigrationHistory_History_MigrationId_History_ContextKey". 

The conflict occurred in database "MYDB", table "dbo.__HistorySeeds". 
The statement has been terminated.

Мой вопрос: как действовать в этой ситуации?

Пример ниже:

public partial class AddMyTable : DbMigration
{
    public override void Up()
    {
        CreateTable(
            "MyTable",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    Description = c.String(nullable: false, maxLength: 100),
                    CreatedById = c.String(maxLength: 100),
                    CreatedTime = c.DateTime(nullable: false)
                })
            .PrimaryKey(t => t.Id);

    }

    public override void Down()
    {
        DropTable("dbo.MyTable");
    }

    public void Seed(MyContext context)
    {
        context.MyTable.AddOrUpdate(x => x.Description, new MyTable { Description = "Aaaaa", CreatedById = "JOHN.DOE", CreatedTime = DateTime.Now });
        context.MyTable.AddOrUpdate(x => x.Description, new MyTable { Description = "Bbbbb", CreatedById = "JOHN.DOE", CreatedTime = DateTime.Now });
        context.MyTable.AddOrUpdate(x => x.Description, new MyTable { Description = "Ccccc", CreatedById = "JOHN.DOE", CreatedTime = DateTime.Now });

    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...