使用 EF 4.1 更新时出现异常

本文关键字:异常 更新 EF 使用 | 更新日期: 2023-09-27 18:33:40

我使用的是EntityFramework代码优先方法。这是插入和更新的方法:

 private void SaveCandidates(Container container, List<Candidate> candidates, bool isInsert)
    {
            var alreadyExists = false;
            foreach (candidate matchingOrderCandidate in candidates)
            {
                alreadyExists = container.Candidates.Any(i => i.Id == candidate.Id);
                if (!alreadyExists && isInsert)
                {
                    container.Entry(candidate).State = EntityState.Added;
                }
                if (alreadyExists && !isInsert)
                {
                    container.Entry(candidate).State = EntityState.Modified;
                }
            }
            container.SaveChanges();
    }

但是在更新的情况下,它会引发异常

[System.InvalidOperationException] = 具有相同键的对象 已存在于 ObjectStateManager 中。对象状态管理器不能使用相同的键跟踪多个对象。

我首先插入候选,然后运行一些自动进程,然后调用此方法进行更新,如果更新,我会在container.SaveChanges()时出现异常。任何帮助都将得到高度赞赏。

使用 EF 4.1 更新时出现异常

似乎同样的问题已经在这里解决了 具有相同键的对象已存在于 ObjectStateManager 中。对象状态管理器不能使用相同的键跟踪多个对象尝试改用

container.Entry(candidate).State = EntityState.Modified;

这:

exist = container.Candidates.FirstOrDefault(i => i.Id == candidate.Id);
if(exist != null) container.Entry(exist).CurrentValues.SetValues(candidate);