2017-04-24 7 views
0

データベース内の項目を編集するための厳密な操作を追加しようとしていますが、このDbUpdateConcurrencyExceptionが発生します。何が問題なのでしょうか? ありがとうございます。MVC Crud Operation Edit

CONTROLLER:

//MODAL POPUP FOR EDIT 

public ActionResult EditItem() 
{ 
    return PartialView(); 
} 

//POST: EDIT ITEM 

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult EditItem(H_Table item) 
{ 
    db_connection.Entry(item).State = EntityState.Modified; 
    db_connection.SaveChanges(); 
    return RedirectToAction("Index"); 
} 
+0

これが役立ちますか? http://stackoverflow.com/questions/26148793/how-to-solve-dbupdateconcurrencyexception-when-updating-a-row – Prisoner

+0

どのようにIDを転送しますか? TimeStamp/RowVersionの列はありますか?また、これにはあらゆる予防策が欠けている。 –

+0

あなたのHTMLビューを表示してください私はあなたがアイテムを渡していないと思います。 – DumpsterDiver

答えて

0

は、基本的には、まず、あなたの更新操作を経る確認する必要があり同じクラスのオブジェクトをビューモデルから取得して、それをデータベースに挿入します。

0

は、あなたのデータベースに更新するあなたのテーブル名を追加します。私はあなたがそのIDを使用して最初の項目を見つけることをお勧めしかし

public ActionResult EditItem(H_Table item) 
{ 
    if(ModelState.IsValid) 
    { 
     using (var db = new YourDbContext()) 
     { 
      db.Entry(item).State = EntityState.Modified; 
      db.SaveChanges(); 
     } 
     return RedirectToAction("Index"); 
    } 
} 

が、その後、塗りつぶし:あなたのモデルが有効であるかどう

public ActionResult EditItem(H_Table item) 
{ 
      H_Table oldObj= db.H_Table.Find(item.ID); 
      db.Entry(oldObj).CurrentValues.SetValues(item); 
      db_connection.SaveChanges(); 
      return RedirectToAction("Index"); 
} 
+0

はまだ動作しません。データベースが接続されているため、はロールを再生しません。コントローラは、それがどのテーブルであるかを既に知っている。 – SonOfAGun

+0

@SonOfAGun更新された回答を確認してください。それがうまくいくことを望みます。 –

関連する問題