2014-09-04 41 views
1

插入許多價值,我有兩個表 enter image description here使用外鍵

questionId是問題的id的外鍵。

我正試圖在「答案」表中保存4個答案。標題是問題的標題,它必須有4個答案。

enter image description here

我如何可以插入4回答這是由外鍵連接?

我已經試過這樣:

QuizEntities quiz = new QuizEntities(); 
Question question = new Question(); 
Answer answer = new Answer(); 

question.Title = titleBox.Text; 
question.ImageURL = "../Uploads/" + PhotoBox.Text; 


answer.Answer1 = firstAnswer.Text; 
answer.Answer1 = secondAnswer.Text; 
answer.Answer1 = thirdAnswer.Text; 
answer.Answer1 = fourthAnswer.Text; 
answer.questionId = question.Id; 
if (firstCheckBox.Checked) 
{ 
    answer.IsCorrect = true; 
} 
else 
{ 
    answer.IsCorrect = false; 
} 

quiz.Questions.Add(question); 
quiz.Answers.Add(answer); 
quiz.SaveChanges(); 

,但使用這個我可以插入只有一個值。我該如何解決它?

+0

您的查詢在哪裏? – Raptor 2014-09-04 10:33:05

+0

@Raptor我已經寫了所有我試過的東西。如果你知道如何做到這一點,用言語告訴我,我會盡力寫這篇文章..我無法猜測如何做到這一點。謝謝 – gsiradze 2014-09-04 10:37:19

+0

設置'IsCorrect'屬性後有沒有更多的代碼,比如'SaveChanges'? – 2014-09-04 10:40:49

回答

2

如果您想要正好添加四個值,則需要創建四個Answer對象,併爲每個對象分配正確的問題ID。如果不用編譯器測試這個,我想你正在尋找類似這樣的東西;

QuizEntities quiz = new QuizEntities(); 
Question question = new Question(); 
Answer answer = new Answer(); 

question.Title = titleBox.Text; 
question.ImageURL = "../Uploads/" + PhotoBox.Text; 
quiz.Questions.Add(question); 

//Add first answer. 
answer.Answer = firstAnswer.Text; 
if (firstCheckBox.Checked) 
{ 
    answer.IsCorrect = true; 
} 
else 
{ 
    answer.IsCorrect = false; 
} 

answer.questionId = question.Id; 
quiz.Answers.Add(answer); 

//Add second answer. 
answer = new Answer(); 
answer.Answer = secondAnswer.Text; 
if (secondCheckBox.Checked) 
{ 
    answer.IsCorrect = true; 
} 
else 
{ 
    answer.IsCorrect = false; 
} 

answer.questionId = question.Id; 
quiz.Answers.Add(answer); 


//... add third and fourth as well. 
quiz.SaveChanges(); 
+0

它的工作原理感謝 – gsiradze 2014-09-04 11:08:13

+0

爲了獲得更好看的代碼我會去Yuliam的答案。 – Sander 2014-09-04 11:50:39

3

只需創建四個答案並將它們全部插入,就可以創建一個函數使代碼更具可讀性。

private static Answer CreateAnswer (
    int id, string answer, bool isCorrect, int questionId) 
{  
    var answer = new Answer 
    { 
     Id = id, 
     Answer = answer, 
     IsCorrect = isCorrect, 
     questionId = questionId 
    }; 
    return answer; 
} 

然後通過分配臨時密鑰來添加一個問題的答案。

using (var quiz = new QuizEntities()) 
{ 
    var qId = 1; 
    var question = new Question 
    { 
     Id = qId, 
     title = titleBox.Text, 
     ImageURL = "../Uploads/" + PhotoBox.Text 
    }; 

    quiz.Questions.Add(question); 
    quiz.Answers.Add(
     CreateAnswer(1, firstAnswer.Text, (bool)firstCheckBox.Checked, qId)); 
    quiz.Answers.Add(
     CreateAnswer(2, secondAnswer.Text, (bool)secondCheckBox.Checked, qId)); 
    quiz.Answers.Add(
     CreateAnswer(3, thirdAnswer.Text, (bool)thirdCheckBox.Checked, qId)); 
    quiz.Answers.Add(
     CreateAnswer(4, fourthAnswer.Text, (bool)fourthCheckBox.Checked, qId)); 
    quiz.SaveChanges(); 
} 

提示:

  • 裹使用,以確保它的正確配置的上下文。
  • 在插入實體之前,臨時密鑰可用於在主體和從屬之間創建關係。