2010-11-23 22 views
0

我遇到了一個非常奇怪的問題,以前從未發生過。同時發生的LINQ數據檢索問題

在登錄碼:

var sqlLogin = db.LoginRetrieve(loginID, archived).SingleOrDefault(); 

//(db是LINQ數據上下文)

--problem:

如果兩個用戶登錄在同一時間,這條線的代碼將拋出一個異常,即「結果中不存在所需列」UserLoginID「。」 但是,如果一個用戶登錄或兩個用戶不同時單擊該按鈕,它將不會有任何例外。

有沒有人可以分享一些燈呢?提前致謝。

Han

回答

1

我懷疑你的DataContext是在請求之間共享的。

不要這樣做。

您應該爲每個請求創建一個單獨的DataContext。
否則,你會得到像這樣的令人討厭的線程問題。 (DataContext的是不是線程安全的)


一般來說,共享請求(例如,static S或應用程序/會話狀態)之間的對象時,你應該非常小心。
除非您另有特別的瞭解,否則應該假定該對象不是線程安全的並且不能共享。