0

(初心者への警告)コードファーストエンティティフレームワーク(MVC3を使用)を使用しており、手順とそれに関連する質問のリストを表示しようとしています。私の構文が例外をスローしている理由がわかりません。「ObjectContextインスタンスが破棄され、接続を必要とする操作に使用できなくなりました。」:

@model IEnumerable<COPSGMIS.Models.Step>

@{
    ViewBag.Title = "Questionaire";
}

<h2>Questionaire</h2>
   @using (Html.BeginForm("Questionaire", "Question", FormMethod.Post, new { id = "SignupForm" }))
   {
       <div>
            @foreach (var item in Model)
            {
              <fieldset class="wizard">
                <legend class="wizard">@Html.DisplayFor(modelItem => item.Title)</legend>
                @foreach (var question in item.Questions)
                //*** item.Questions is throwing an exception  ****
                {
                <label for="question">@Html.DisplayFor(modelItem => question.QuestionText)</label>
                <input id="question" type="text" /> 
                }
              </fieldset>
            }            
        <p>
            <input id="SaveAccount" type="button" value="Save" />
        </p>
    </div>
   }

私のモデル:

public int StepID { get; set; }
        public int ReviewID { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public int StepOrder { get; set; }
        public virtual ICollection<Question> Questions { get; set; }

私のコントローラー:

var steps = from b in db.Steps
                            orderby b.StepOrder
                            select b;
                return View(steps.ToList());
4

1 に答える 1

0

item.Questionsがアクセス可能である場合、EFはデータベースにアクセスして、そのアイテムの質問を取得しようとします。コンテキストが破棄されている場合、失敗します。ビュー内の質問をループするので、「含める」を使用して最初のクエリに質問を追加することをお勧めします。

var steps = from b in db.Steps.Include(s => s.Questions)
            orderby b.StepOrder
            select b;

return View(steps.ToList());
于 2012-11-29T16:53:12.067 に答える