У меня есть две таблицы
questionId - это внешний ключ идентификатора вопросов.
Я пытаюсь сохранить 4 ответа в таблице "Ответы". Заголовок - это вопрос, и у него должно быть 4 ответа.
Как я могу вставить 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();
но используя это, я могу вставить только одно значение. Как я могу это решить?
Если вы хотите добавить ровно четыре значения, вам нужно создать четыре объекта " Answer
и для каждого из них назначьте правильный идентификатор вопроса.
Не тестируя это с помощью компилятора, я думаю, что вы ищете что-то вроде этого;
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();
Просто создайте четыре ответа и вставьте их все, вы можете создать функцию, чтобы сделать код более читаемым.
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();
}
Советы: