在我的模型中,一个问题可以有许多有效的答案,并且一个答案可以用于许多问题。我在 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)。”为什么在将现有对象添加到关系时会尝试第二次插入,有没有办法阻止它?