首页 > 代码库 > ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
在使用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;
}}
问题解决。
ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。