我是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无法使用相同的键跟踪多个对象。”
通过做一些搜索我知道错误是由于我首先查询现有数据,然后附加修改后的实体,但我们如何更新此更新方法,以便它不会中断代码中的任何其他调用?
由于
答案 0 :(得分:0)
您可以尝试两种方法: