1

ユーザーがフィールドに入力するウィザード手順があります。次に、json を使用して、ウィザードの各ステップで値をデータベースに保存します。ただし、私のリポジトリには savechanges() があります。ただし、変更は保存されず、代わりにエラーがスローされます。

「NKImodeledmxContainer.SelectedQuestion」のエンティティは、「QuestionSelectedQuestion」関係に参加します。0 件の関連する「質問」が見つかりました。1 つの「質問」が予想されます。

エラーを取り除く方法を知っている人はいますか?Question から ID を取得してデータベースに保存する必要がありますか、それとも EF で何かを変更してエラー メッセージがスローされないようにすることはできますか?

これは私のコントローラの私の投稿です:

        [HttpPost]
    public JsonResult AnswerForm(int id, SelectedQuestionViewModel model)
    {
        bool result = false;
        var goalCardQuestionAnswer = new GoalCardQuestionAnswer();
        goalCardQuestionAnswer.SelectedQuestion = new SelectedQuestion();

        goalCardQuestionAnswer.SelectedQuestion.Id = model.QuestionID;
        goalCardQuestionAnswer.Comment = model.Comment;
        goalCardQuestionAnswer.Grade = model.Grade;

            if (goalCardQuestionAnswer.Grade != null)
            {

                    answerNKIRepository.SaveQuestionAnswer(goalCardQuestionAnswer);
                    answerNKIRepository.Save();
                    result = true;
                    return Json(result);                   
            }

       answerNKIRepository.SaveQuestionAnswer(goalCardQuestionAnswer);
       answerNKIRepository.Save();

        return Json(result);
    }

マイ リポジトリ

    public class AnswerNKIRepository
{
    private readonly NKImodeledmxContainer db = new NKImodeledmxContainer();

    public List<SelectedQuestion> GetAllSelectedQuestionsByGoalCardId(int goalCardId)
    {
        return db.SelectedQuestion.Where(question => question.GoalCard.Id == goalCardId).ToList();
    }

    public void SaveQuestionAnswer(GoalCardQuestionAnswer goalCardQuestionAnswer)
    {
        db.GoalCardQuestionAnswer.AddObject(goalCardQuestionAnswer);
    }

    public void Save()
    {
        db.SaveChanges();
    }
}

これは私のビューモデルです:

 public class SelectedQuestionViewModel
{

    public int? Grade { get; set; }
    public string Comment { get; set; }
    public string SelectedQuestionText { get; set; }
    public int QuestionID { get; set; }
}

これは私のデータベースモデルです:

ここに画像の説明を入力

4

1 に答える 1

1

例外は必須のナビゲーション プロパティであると不平を言いSelectedQuestion.Questionますが、コードでこのプロパティを設定していません。リポジトリから Id で質問を読み込んでSelectedQuestion.Question参照に設定してみてください: この行を置き換えてください ...

goalCardQuestionAnswer.SelectedQuestion.Id = model.QuestionID;

...に...

goalCardQuestionAnswer.SelectedQuestion.Question =
    answerNKIRepository.GetQuestionById(model.QuestionID);

そして、リポジトリにメソッドを追加します:

public Question GetQuestionById(int id)
{
    return db.Question.Single(q => q.Id == id);
}
于 2012-04-24T13:32:40.050 に答える