我目前面臨以下問題:
我有一個C#.NET應用程序連接到數據庫(使用NHibernate)。該應用程序基本上顯示數據庫內容並讓用戶編輯它。由於應用程序的多個實例同時運行(在相同和不同的工作站上),只要兩個用戶同時修改相同的記錄,我就會遇到併發問題。數據庫或用戶級鎖
目前我有點解決樂觀鎖定的問題。但是這並不是一個完美的解決方案,因爲一個用戶仍然失去了它的改變。
現在我想出了讓應用程序在每次從數據庫加載新條目時鎖定一個條目並在用戶切換到另一個條目後立即釋放鎖定的想法。所以基本上所有當前顯示給用戶的條目都被鎖定在數據庫中。如果另一個用戶加載鎖定的條目,它將以只讀模式顯示它們。
現在我的真正的問題:
在數據庫級別上進行鎖定是一個好主意嗎?這意味着每次用戶加載一個新條目並鎖定它時,我都會打開一個新的事務。或者,最好通過一個「鎖定表」來實現,例如鎖定表中所有鎖定項的鍵?
感謝您的幫助!