在使用EF更新數據的時候,報如下錯:
ObjectStateManager 中已存在具有同一鍵的對象。ObjectStateManager 無法跟蹤具有相同鍵的多個對象。
原因是:在EF上上下文中不允許存在2個具有相同鍵的實體。Update部分修改如下:
public Product Update(Product item){try{if (item == null){throw new ArgumentException("Product不能為null");}var entry = db.Entry(item);if (entry.State == EntityState.Detached){var set = db.Set<Product>();Product attachedProduct = set.Local.SingleOrDefault(p => p.Id == item.Id);//如果已經被上下文追蹤if (attachedProduct != null){var attachedEntry = db.Entry(attachedProduct);attachedEntry.CurrentValues.SetValues(item);}else //如果不在當前上下文追蹤{entry.State = EntityState.Modified;}}db.SaveChanges();return item;}catch (Exception){throw;}}
問題解決。
