2017-04-24 161 views
0

我想添加一個crud操作來編輯數據庫中的一個項目,但我得到這個DbUpdateConcurrencyException。可能是什麼問題? 在此先感謝。MVC Crud操作編輯

控制器:

//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

基本上你必須檢查你的模型是有效還是無效第一,然後通過你的更新操作:

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"); 
    } 
} 

不過我建議你通過使用ID先找到項目,然後填寫了通過您從視圖模型獲得的相同類的對象,然後將其插入到數據庫中。

0

添加要在數據庫中更新的表名。

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檢查我的更新答案。希望它能起作用。 –