2016-01-23 21 views
0

我得到了下面的實體框架的錯誤,當設法保存編輯頁面商店更新,插入或刪除語句影響行的意外數字(0)保存編輯頁

「商店更新,插入或刪除語句影響了意外數量的行(0)。實體可能已被修改或刪除,因爲實體已加載。「

_db.Entry(product).State = EntityState.Modified; 
_db.SaveChanges(); 

這裏是我的編輯控制器方法

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Edit(Product product) 
{ 
    try 
     { 
     if (ModelState.IsValid) 
      { 
      _db.Entry(product).State = EntityState.Modified; 
      _db.SaveChanges(); 
      return RedirectToAction("Index"); 
      } 
     } 
    catch (DataException) 
    { 
     ModelState.AddModelError("", "Unable to save changes. Try again,  
     and if the problem persists see your system administrator."); 
    } 

    ViewBag.CategoryId = new SelectList(_db.Categories, "CategoryId", 
         "CategoryName", product.CategoryId); 

    return View(product); 
} 

回答

0
_db.Entry(product).State = product.Id == 0 :EntityState.Add ? EntityState.Modified; 
_db.SaveChanges(); 

修改,如果產品已經在那裏纔有效。如果不在數據庫中添加產品的實例。

0

這是因爲您正在嘗試刪除尚未存在的記錄。

您可以通過以下操作

var prdct= db.products.Find(product.id); 
if(prdct != null) 
{ 
    db.Entry(product).State = EntityState.Modified; 
    db.SaveChanges(); 
}else 
{ 
    return NotFound(); 
} 
捕獲這個異常
相關問題