【发布时间】:2016-07-09 05:19:57
【问题描述】:
首先,我很确定之前一定有人问过这个问题,但无法通过谷歌搜索找到确切的答案,所以请多多包涵。
我继承了一个使用迁移的代码优先实体框架项目。我在表中添加了一个(不可为空)列,我需要在该列中插入所有现有条目的值 - 这不是默认值:
public override void Up()
{
AddColumn("dbo.QuestionType", "Duplicated", c => c.Boolean(nullable: false, defaultValue: false));
Sql("UPDATE dbo.QuestionType SET Duplicated = 1");
}
然而,最初有一些种子数据添加到此表中:
context.QuestionTypes.AddOrUpdate(
e => e.Name,
new QuestionType() { Name = QuestionTypeNames.INTERVIEWER});
这意味着更新语句会立即被调用 Seed 方法(每次迁移后调用)中的数据覆盖。
我的问题是:
- 将额外的值简单地添加到种子数据中是否“安全”(或者这会导致数据库中不存在新列的早期迁移导致一切中断)。
- 或者,有什么方法可以阻止 Seed 方法在此迁移(以及所有后续迁移)之后运行。
谢谢
【问题讨论】:
标签: c# entity-framework entity-framework-migrations seeding