【发布时间】:2013-08-20 16:49:48
【问题描述】:
在我的模型中,一个问题可以有许多有效的答案,并且一个答案可以用于许多问题。我在 Answer.Text 属性上有一个唯一索引,以防止重复并确保验证有效。我的 Seed 方法中有这段代码。
Answer _None = new Answer { Text = "None", SortOrder = 50 };
context.Answers.AddOrUpdate(x => x.Text, _None);
context.SaveChanges();
Question q = new Question
{
Text = "Bathroom flooring",
Answers = new Answer[]
{
_None,
new Answer { Text = "Carpet", SortOrder = 60}
}
}
context.Questions.AddOrUpdate(x => x.Text, q);
context.SaveChanges();
该方法引发错误,因为在第二次调用 context.SaveChanges() 时尝试另一个插入以获取文本为“None”的答案。 *无法在具有唯一索引“IX_NaturalKey”的对象“dbo.Answers”中插入重复的键行*。重复键值为 (None)。”为什么在将现有对象添加到关系时会尝试第二次插入,有没有办法阻止它?
【问题讨论】:
-
我试过代码,效果很好。
-
在插入问题答案数组时,尝试从上下文中提取 _None 答案。可能只是不知道它在上下文中的问题
-
@sza 我正在使用 EF6 候选版本。也许这有问题......同时,由于这可能是生产中所需的固定数据,我决定通过 sql 语句插入数据,以便我可以在迁移的 Up 方法中进行插入,我现在已经解决了这个问题
标签: entity-framework code-first seeding