簡體   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