當代碼更新某個表內的某一行時,我在我的Web應用程序中獲得ChangeConflictException
。我可以看出,最好的情況是兩個用戶在同一時間完成交易,並且樂觀併發隻影響SubmitChanges()
方法,而不是在選中該行時執行鎖定。SELECT FOR UPDATE的LINQ版本
因此,換句話說,我有這樣的交易:
Dim query = From row in Table _
Where row.ID = <blah> _
Select row
Dim result = query.Single()
result.COLUMN = 2
dataContext.SubmitChanges()
內置樂觀併發鎖定時SubmitChanges()
被稱爲記錄,但如果記錄Single()
後改變之前SubmitChanges()
那麼誤差拋出。
...至少這是我的理論......
有誰知道的一種方式,在SubmitChanges()
在Single()
呼叫,才能開始鎖定,而不是隻?
從我的理解來看,似乎SubmitChanges()具有內置事務處理。所以可能有一個解決方案可以改變內置事務處理的方式。例如:DataContext.ExecuteCommand(「SET TRANSACTION ISOLATION LEVEL SERIALIZABLE」)或類似的內容。 – Adam 2009-12-04 19:38:23