检测到冲突的更改。尝试使用相同的密钥插入多个实体时可能会发生这种情况。
我通过以下代码收到上述错误:
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();
答案 0 :(得分:0)
您正在添加UserLanguage
个实体,其密钥与curUserLanguages
中的实体相同。即使您打算使用RemoveRange
删除这些实体,上下文仍然会跟踪它们,因为您尚未保存更改,并且上下文无法跟踪使用相同键的同一类型的多个实体。 / p>
在删除未被替换的实体之前,您可能有必要找到要替换的实体并更新其属性。