提交DataContext更改时发生Linq ChangeConflictException

时间:2010-03-26 23:06:03

标签: linq-to-sql concurrency

System.Data.Linq.ChangeConflictException: 2 of X updates failed.
  at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
  at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
  at PROJECT.Controllers.HomeController.ClickProc(Int32 id, String code, String n)

这是我经常得到的。这个动作每天进行数千次,每隔5秒我就会得到一次此异常。根据我的理解,当在创建DataContext和更新它之间的时间段内数据库中的某些内容发生变化时,就会发生这种情况。我是对的吗?

我该如何解决?

更新

我刚刚调试了错误,发现了以下内容:

Table name: dbo.Stats
current value: 9852039
original value: 9852038
database value: 9852039

统计表不断更新。那么我怎样才能让LINQ保存更改。通过SqlDataCommand访问“经典”SQL Server,我从来没有遇到过类似的问题。

1 个答案:

答案 0 :(得分:10)

这是由于乐观的并发性。您可以更改此行为,但在执行此操作之前了解它的作用。

https://blogs.msdn.microsoft.com/matt/2008/05/22/intro-to-linq-to-sql-optimistic-concurrency/