当我运行以下代码时,我得到了
try {
var questionRepo = new QuestionRepository(db);
var question = new Question();
question.QuestionText = text;
question.QuestionCategory = SelectedQuestionCategory;
db.QuestionCategory.Attach(SelectedQuestionCategory);
//Tried adding
//db.Entry(question).State = System.Data.Entity.EntityState.Added;
questionRepo.Add(question);
db.SaveChanges();
} catch (Exception ex) {
Debug.WriteLine(ex.Message);
return;
}
当我以前没有使用QuestionCategory
时,没有错误,但如果我有错误,我会收到错误。
错误仅显示我的数据库中已经有相同选定SelectedQuestionCategory
的问题。我仔细检查了数据库,Question
的主键位于id
列,而不是QuestionCategory
。
我得到的错误是:
附加类型为' QuestionCategory'的实体失败 因为同一类型的另一个实体已经具有相同的主要实体 核心价值。
当外键不是组合主键或主键时,为什么它在同等外键上失败?
答案 0 :(得分:1)
可能在您添加问题实体框架尝试将另一个新的QuestionCategory实例添加到附加到问题的DB时。 尝试使用Id 或更改QuestionCategory的对象状态。
/
答案 1 :(得分:0)
首先,问题似乎是关于QuestionCategory的PK而不是问题。 SelectedQuestionCategory是如何设置的?你是否用你想要的值新建了一个QuestionCategory实例?如果是这样,您无意中尝试使用相同的PK添加第二个实例。在这种情况下,您最好从db.QuestionCategory中检索现有实例,因为您已经拥有了DbContext。