C# 使用EF 4.1更新时出现异常

C# 使用EF 4.1更新时出现异常,c#,entity-framework-4.1,C#,Entity Framework 4.1,我使用EntityFramework代码优先的方法。这是插入和更新的方法: private void SaveCandidates(Container container, List<Candidate> candidates, bool isInsert) { var alreadyExists = false; foreach (candidate matchingOrderCandidate in candidate

我使用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();
    }
private void save候选者(容器、列表候选者、bool-isInsert)
{
var-alreadyExists=false;
foreach(候选项中的候选项匹配或条件)
{
alreadyExists=container.Candidates.Any(i=>i.Id==candidate.Id);
如果(!alreadyExists&&isInsert)
{
container.Entry(candidate).State=EntityState.Added;
}
if(alreadyExists&&!isInsert)
{
container.Entry(candidate).State=EntityState.Modified;
}
}
container.SaveChanges();
}
但在更新的情况下,它抛出异常

[System.InvalidOperationException]=具有相同密钥的对象 ObjectStateManager中已存在。ObjectStateManager无法跟踪具有相同密钥的多个对象


我首先插入候选项,然后运行一些自动过程,然后调用此方法进行更新,在更新的情况下,我在
container.SaveChanges()
处得到异常。任何帮助都会让人大吃一惊。

这里似乎已经解决了同样的问题 试着改用

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

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