0

この質問はすでに何度も尋ねられていますが、なぜこのエラーが発生し続けるのかまだわかりません。

私のコントローラーには、次のメソッドがあります。

//
// POST : /ObjectProducer/Edit/5
[HttpPost]
public ActionResult Edit(OBJECT_PRODUCER _objProd)
{
    if (ModelState.IsValid)
    {
        m_Db.Entry(_objProd).State = EntityState.Modified;
        m_Db.SaveChanges();
        return RedirectToAction("SearchIndex");
    }

    return View(_objProd);
}

しかし、m_Db.Entry(_objProd).State = EntityState.Modified;行にヒットすると、エラーが発生します。誰が私に何が悪いのか説明できますか?

** 編集 **

「編集」メソッド (「GET」メソッド) を開始するコントローラー メソッドは次のとおりです。

//
// GET : /PriceProvider/Edit
public ActionResult Edit(int id = 0)
{
    OBJECT_PRODUCER objProd = m_ProductManager.GetObjProdByID(id);

    if (objProd == null)
    {
        ViewData["ErrorMessage"] = m_NoDataFound;
    }

    return View(objProd);
}
4

2 に答える 2

1

m_Db から _objProd エンティティを再度フェッチしてみてください。投稿で取得したものは、実際には現在のデータコンテキストの一部ではなく、Get バージョンの Edit で使用されているデータコンテキストからのものです。

var _newObjProd = m_Db.GetObjProdByID(_objProd.ID);

基本的に、エンティティは 2 つの DataContext 間で適切に機能しません。新しいデータコンテキストでエンティティを再度ロードする必要があります。

于 2013-04-05T17:01:09.770 に答える