我正在使用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:雖然我修復上面確實防止異常被拋出,它並沒有解決根本問題:
因爲我有一個以上的數據背景下,最終被一個以上的緩存每個對象的副本。我應該在每次加載頁面時重新創建數據上下文嗎?
我寧願指示數據上下文來忘記一切。這可能嗎?