Мы используем 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 });
}
}
}