【发布时间】:2015-04-05 02:24:35
【问题描述】:
我在更新 edmx 图中不存在的多对多表时遇到问题。
QuestionGroups
PK - QuesitonGroupID
Questions
PK - QuestionID
edmx 中不存在此表:我无法更新此表
QuestionGroupQuestions
PK - QuestionGroupID
PK - QuestionID
Answers
PK - AnswerID
这张表我可以正确更新这张表
QuestionAnswers
PK - QuestionID
PK - AnswerID
这里是代码
public ActionResult Create(int questionGroupID, QuestionVM questionVM)
{
Mapper.CreateMap<Question, QuestionVM>();
Question question = Mapper.DynamicMap<Question>(questionVM);
if (question.Answers != null)
{
question.Answers = new List<Answer>();
foreach (var answer in questionVM.Answers)
{
var questionAnswerToAdd = db.Answers.Find(answer.AnswerID);
question.Answers.Add(questionAnswerToAdd);
}
}
db.Questions.Add(question);
db.SaveChanges();
var questionGroup = db.QuestionGroups.Find(questionGroupID);
questionGroup.Questions.Add(question);
db.QuestionGroups.Add(questionGroup);
上面的代码正在运行。我不想更新 QuestionGroup 表。我只想更新 QuestionGroupQuestions 表。
db.Entry(questionGroup).State = EntityState.Unchanged;
db.SaveChanges();
return RedirectToAction("Index", "Question");
}
更新前已有2条记录
QuestionGroupID, QuestionID
14,1
14,3
添加新问题时,我收到此错误消息
{"违反 PRIMARY KEY 约束 'PK_QuestionGroupQuestions'。无法在对象 'dbo.QuestionGroupQuestions' 中插入重复键。重复键值为 (14, 1)。\r\n语句已终止。"}
【问题讨论】:
-
听起来你已经和那个 PK 争吵了;不?你需要删除那些吗?
标签: c# sql asp.net-mvc model-view-controller