在我们的EF 5应用程序中,当我们在插入或更新时遇到SQL Server死锁错误时,我们会立即再次尝试操作。但是,当我们尝试这样做时,我们会收到以下错误:
"Conflicting changes detected. This may happen when trying to insert multiple entities with the same key."
此错误不是来自SQL Server。这是EF 5错误。我们不会尝试使用相同的密钥插入多个实体。 IOW,我们不会尝试插入重复的行。但是,我怀疑这个错误意味着别的东西。但我不完全确定我知道问题是什么。如果我不得不猜测,我会说在第一次尝试时,EF会看到尝试插入实体的位置。它因为死锁而失败。当我们立即再次尝试时,EF认为我们正在尝试使用相同的键再次执行相同的操作,并且不喜欢它。不知道怎么解决这个问题。
答案 0 :(得分:10)
听起来您可能正在尝试针对DbContext的同一实例执行查询。在这种情况下,您的更改已在最后一次尝试中处于待处理状态。
由于上下文中没有“撤消挂起的更改”,您必须在“重试”之间处置并重新创建上下文。