EF6 - 删除然后添加

时间:2015-07-27 18:00:25

标签: entity-framework

  

检测到冲突的更改。尝试使用相同的密钥插入多个实体时可能会发生这种情况。

我通过以下代码收到上述错误:

var curUserLanguages = Context.UserLanguages.Where(ul => ul.UserDataId == userDataId).ToList();
Context.UserLanguages.RemoveRange(curUserLanguages);

foreach (var langId in languageIds)
{
    ...
    Context.UserLanguages.Add(newUL); 
}

Context.SaveChanges();

1 个答案:

答案 0 :(得分:0)

您正在添加UserLanguage个实体,其密钥与curUserLanguages中的实体相同。即使您打算使用RemoveRange删除这些实体,上下文仍然会跟踪它们,因为您尚未保存更改,并且上下文无法跟踪使用相同键的同一类型的多个实体。 / p>

在删除未被替换的实体之前,您可能有必要找到要替换的实体并更新其属性。