我的帖子編輯操作這次打擊代碼:)包含此代碼錯誤更新實體框架的DbModel之後
public ActionResult EditProduct(EditProductModel viewModel,HttpPostedFileBase file)
{
if (Session["AdminId"] != null && Session["AdminName"] != null)
{
repository = new Repository();
var pro = repository.FindProductById(viewModel.Id);
// Automappper configoration.
var config = new MapperConfiguration(cgf => cgf.CreateMap<EditProductModel, Product>());
var mapper = config.CreateMapper();
pro = mapper.Map<Product>(viewModel);
repository.UpdateProduct(pro);// Error
repository.SaveChanges();
return RedirectToAction("ShowProduct",new{id = AdminId});
}
return RedirectToAction("AdminLogin");
}
的repository.UpdateProduct(:
public void UpdateProduct(Product obj)
{
entities.Entry(obj).State = EntityState.Modified;
}
但這頂部代碼拋出這個錯誤:
附加一個'MobileShop.Models.Product'類型的實體失敗,因爲另一個相同類型的實體已經有相同的prim ary鍵值。如果圖中的任何實體具有衝突的鍵值,則使用「附加」方法或將實體的狀態設置爲「未更改」或「已修改」時可能會發生這種情況。這可能是因爲一些實體是新的並且還沒有收到數據庫生成的關鍵值。在這種情況下,使用'Add'方法或'Added'實體狀態來跟蹤圖形,然後根據情況將非新實體的狀態設置爲'Unchanged'或'Modified'。
我該如何解決它?
那麼怎麼辦? –
@komeilshahmoradi - 您可以註釋掉上面的行。接下來構建你的'pro'實體(你已經這樣做了),確保它具有與視圖模型中相同的'Id'。保持'Update'方法不變。這應該工作 – Yogi
它不工作 –