2009-12-04 64 views
0

當代碼更新某個表內的某一行時,我在我的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()呼叫,才能開始鎖定,而不是隻?

+0

從我的理解來看,似乎SubmitChanges()具有內置事務處理。所以可能有一個解決方案可以改變內置事務處理的方式。例如:DataContext.ExecuteCommand(「SET TRANSACTION ISOLATION LEVEL SERIALIZABLE」)或類似的內容。 – Adam 2009-12-04 19:38:23

回答

0

能夠工作是使用DataContext.ExecuteCommand併發送自己的更新語句最簡單的事情。