0

linqtosqlを使用してmvc4フレームワークでオブジェクトを編集する際に問題が発生しました。「tbBoeking」オブジェクトはVisualStudio2010によって生成され、.dbmlファイルに存在します。生成されたばかりで、データベースやデータベースに変更は加えられていません。

BoekingController.csのコード:

//This class has been generated and resides in a .dbml file
private DataClassesDataContext db = new DataClassesDataContext();

//Display edit form
public ActionResult Edit(int id = 0)
{
    tbBoeking boeking = db.tbBoekings.Single(p => p.boeknummer == id);
    if (boeking == null)
    {
        return HttpNotFound();
    }
    return View(boeking);
}

//Process changes made in form
[HttpPost]
public ActionResult Edit(tbBoeking boeking)
{
    if (ModelState.IsValid)
    {
        db.tbBoekings.Attach(boeking, true);
        db.SubmitChanges();
        return RedirectToAction("Index");
    }
    return View(boeking);
}

編集フォームの表示は正常に機能しますが、送信を押して2番目のEdit()を呼び出すと、問題が発生します。db.submitchanges()で、「行が見つからないか変更されていません」というエラーが表示されます。

このエラーに関する他のいくつかの投稿を読みましたが、役に立ちませんでした。私はLinq-to-sqlまたは並行性でいくつかの基本的な間違いを犯していると思います。Attach()を間違った場所で使用していますか、それとも別のものですか?

前もって感謝します、

ブライト

4

1 に答える 1

0

必要な情報はすべて記入されていますか?また、更新が必要になる可能性のあるある種のタイムスタンプがありますか。バージョニングシステムが導入されている場合、asUpdatedフラグを無視するコードについて聞いたことがあります。そのエラーは非常に一般的である可能性があるため、他のいくつかのチェックが役立つ場合があります

上記の提案が役に立たない場合は、SQLプロファイラートレースを実行して、サーバーに供給されているSQLを確認します。

于 2012-07-09T13:09:00.827 に答える