zoukankan      html  css  js  c++  java
  • 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);
    
                    {
    
                        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;
    
            }
    
  • 相关阅读:
    第一次程序改错
    趣拼图——项目演示及代码
    数据流图和数据流程图
    UML图
    UML用例图
    第二次迭代目标的分配
    小组分工
    迭代目标
    我们的项目
    2017-4-18 关于小组APP
  • 原文地址:https://www.cnblogs.com/tianboblog/p/5106519.html
Copyright © 2011-2022 走看看