2015-04-05 51 views
0

我在更新edmx圖中不存在的多對多表格時遇到問題。更新多對多表格。 MVC中不存在表格

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聲明已終止。「}

+0

聽起來就像你已經與那個PK一行;沒有?你需要刪除這些? – ChiefTwoPencils 2015-04-05 02:32:08

回答

0

當mapp (QuestionGroupsQuestions),保存相關ID(QuestionGroupQuestions)的表不映射到任何實體,而不是映射到其他實體,而是將其他映射表映射到具有多對多關聯的實體,該關聯是內部彼此之間的實例集合,當保存這些表格的任何有效更改時,EF會自動更新第三個表格(QuestionGroupQuestions),因此無需更新QuestionGroupQuestions。

var questionGroup = db.QuestionGroups.Find(questionGroupID); 
questionGroup.Questions.Add(question); 
//The problem is here that you are adding questionGroup again. comment it and check 
//db.QuestionGroups.Add(questionGroup); this cause a error, questionGroup already exists 

現在,如果你將更改保存到db的QuestionGroupQuestions表也應該得到更新。

+0

非常感謝。 – RThompson 2015-04-05 05:36:33

+0

我現在明白了。再次感謝。 – RThompson 2015-04-05 05:37:10