繁体   English   中英

错误:ObjectStateManager中已经存在具有相同键的对象。 ObjectStateManager无法使用相同的键跟踪多个对象

[英]Error: An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key

我是EF的初学者,正在开发其他代码。 通用存储库类具有以下更新方法

public void Update(TEntity entity)
{
    if (entity.EntityState == EntityState.Detached)
    {
        objectSet.Attach(entity);
    }
    objectContext.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
}

public void CommitApplicationEntities()
{
    objectContext.SaveChanges();
}

这个方法叫做

public void UpdateSearchLog(SearchLog toUpdate)
{
    searchLogRepository.Update(toUpdate);
    searchLogRepository.CommitApplicationEntities();
}

修改SearchLog后,我调用searchLogRepository.Update(toUpdate),但收到此错误

“ ObjectStateManager中已经存在具有相同键的对象。ObjectStateManager无法跟踪具有相同键的多个对象。”

通过进行一些搜索,我知道该错误是由于以下事实造成的:我先查询现有数据,然后附加修改后的实体,但是我们如何更新此更新方法,以使其不会因其他调用而中断在代码中?

谢谢

您可以尝试两种方法:

  1. 查询现有数据后,请先分离该对象,然后再附加修改后的对象
  2. 如果查询现有数据,则返回一条记录,使用分离对象中的值更新该记录,然后保存更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM