我正在使用LINQ to SQL,并且有一个问题增加了视图计数器交叉连接。Linq中的ChangeConflictException到Sql非并发更新
的我使用代码蝇头位是:
t = this.AppManager.ForumManager.GetThread(id);
t.Views = t.Views + 1;
this.AppManager.DB.SubmitChanges();
现在在我的测试中,我运行这个多次,不同时。执行此测试的对象总共有4个副本。
也就是说,没有锁定问题,或类似的东西,但有4个数据上下文。
现在,我希望这样工作:取一行,修改一个字段,更新行。但是,这是抛出一个ChangeConflictException。
如果没有这些副本同时运行,为什么更改会发生冲突?
有没有办法忽略某个表上的变更冲突?
编辑:找到了答案:
您可以设置“UpdateCheck的=从不”上表中的所有列创建更新的后入胜的风格。这是应用程序在将它移植到LINQ之前所使用的,因此我现在将使用它。
EDIT2:虽然我修复上面确实防止异常被抛出,它并没有解决根本问题:
因为我有一个以上的数据背景下,最终被一个以上的缓存每个对象的副本。我应该在每次加载页面时重新创建数据上下文吗?
我宁愿指示数据上下文来忘记一切。这可能吗?